Runtime获取网络状态
来源:互联网 发布:少见的姓氏 知乎 编辑:程序博客网 时间:2024/05/29 04:48
获取网络状态的方法有两种。这是我觉得比较方便的一种。还有一种是结合RunLoop去做的,不过那种要导入其他头文件。用起来也是一样。
//// ViewController.m// Runtime获取当前网络状态//// Created by 陆巧怡 on 15/8/4.// Copyright (c) 2015年 Simon. All rights reserved.//#import "ViewController.h"#import <objc/message.h>@interface ViewController ()@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; [self takeOutThestatusBar];}#pragma 找到状态栏-(void)findStatusBar{ //获取当前的app UIApplication *app = [UIApplication sharedApplication]; //遍历当前app的所有属性 找到关于状态栏的属性 unsigned int outCount = 0; Ivar *ivars = class_copyIvarList([app class], &outCount); for (int i =0; i<outCount; i++) { Ivar ivar = ivars[i]; const char *name = ivar_getName(ivar); NSString *propertyName = [NSString stringWithCString:name encoding:NSUTF8StringEncoding]; if ([propertyName isEqualToString:@"_statusBar"]) { NSLog(@"状态栏"); } }}#pragma 通过KVC找出状态栏-(void)takeOutThestatusBar{ //获取当前的app UIApplication *app = [UIApplication sharedApplication]; //通过KVC获取到当前APP的状态栏 id statusBar = [app valueForKey:@"statusBar"]; NSArray *childensArray = [[statusBar valueForKeyPath:@"foregroundView"] subviews]; //NSLog(@"%@",childensArray); /* UIStatusBarServiceItemView UIStatusBarDataNetworkItemView UIStatusBarBatteryItemView UIStatusBarTimeItemView */ int netWorkType = 0; for (id child in childensArray) { if ([child isKindOfClass:NSClassFromString(@"UIStatusBarDataNetworkItemView")]) { unsigned int outCount = 0; Ivar *ivars = class_copyIvarList([child class], &outCount); for (int i =0; i<outCount; i++) { Ivar ivar = ivars[i]; const char *ivarName = ivar_getName(ivar); /* dataNetworkType 0 - 无网络 ; 1 - 2G ; 2 - 3G ; 3 - 4G ; 5 - WIFI; wifiStrengthRaw wifiStrengthBars enableRSSI showRSSI */ //NSString * propertyName=[NSString stringWithCString:ivarName encoding:NSUTF8StringEncoding]; //网络状态 netWorkType = [[child valueForKey:@"dataNetworkType"] intValue]; } } } switch (netWorkType) { case 0: NSLog(@"无网络"); break; case 1: NSLog(@"2G网络"); break; case 2: NSLog(@"3G网络"); break; case 3: NSLog(@"4G网络"); break; case 5: NSLog(@"WIFI网络"); break; default: break; } }- (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning];}@end
0 0
- Runtime获取网络状态
- runtime 获取网络状态
- iOS开发之runtime的运用-获取当前网络状态
- iOS开发之runtime的运用-获取当前网络状态
- iOS开发之runtime的运用-获取当前网络状态
- Runtime的使用之获取当前网络状态
- iOS开发之runtime的运用-获取当前网络状态
- iOS-开发之runtime的运用-获取当前网络状态
- iOS开发之runtime的运用-获取当前网络状态
- iOS开发之runtime的运用-获取当前网络状态
- iOS开发之runtime的运用-获取当前网络状态
- 获取网络状态
- 获取网络状态
- 获取网络状态
- 获取网络状态
- Android获取网络状态
- Android获取网络状态
- LINUX获取网络状态
- android 消息提示框点击“确定”按钮后,不能及时关闭提示框的解决方案
- 2015年8月3日--oracle
- 配置IIS7运行CGI脚本创建动态网页
- WPF MVVM初体验
- importtsv工具使用笔记
- Runtime获取网络状态
- 南邮 OJ 1126 GCD
- Android Studio系列教程五--Gradle命令详解与导入第三方包
- 06-js禁止回车提交表单
- VS2013编译安装VTK-6.2.0_支持Qt5.4.2
- poj解题报告——2234
- 二三四五六章作业
- 大数模板
- hulu面试经验