苹果原生检测网络状态

平时,我们大部分人估计都是用的AF自带的检测网络状态类来判断当前手机网络状态,其实苹果原生的检测网络状态的类用着也是很方便和可行的.这里就不赘述苹果原生的优缺点直接上代码.

1.苹果官方提供了一个Reachability示例demo,大家可以下载看下.

https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

2.从上面的demo中取出Reachability.h和Reachability.m这两个类,拖入到自己的工程中.

3.拖入.h和.m之后我们还需要添加一个系统依赖库,就是SystemConfiguration.framework,(针对小白:  找到build Phases,点击Link Binary with Libraries的箭头,然后点击+号,添加即可)

4.这时候我们所有的准备工作都已经完毕了,大家直接可以在appDelegate类中导入他的头文件Reachability.h,然后在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  方法中实现即可.具体实现请看代码:

5.Reachability *reach = [Reachability reachabilityWithHostName:@"http://www.baidu.com"];//开启网络状态监听

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(myNetStatusChange:) name:kReachabilityChangedNotification object:nil]; // 发送通知,通过kvo来实时监听网络状态变化.

[self.hostReach startNotifier];//开启监听,  特别注意,这步一定要写.

//以下是通知方法的实现.我这里用了个单例存起来来判断.

- (void)myNetStatusChange: (NSNotification *)note

{

Reachability *currentReach = [note object];

NSParameterAssert([currentReach isKindOfClass:[Reachability class]]);

//判断网络状态

switch (self.hostReach.currentReachabilityStatus) {

case NotReachable:

NSLog(@"网络不通");

break;

case ReachableViaWiFi:

NSLog(@"wifi上网");

[UserInfoCenter shareInstance].netModel = @"wifi"; //我用自己的单例存起来

break;

case ReachableViaWWAN:

NSLog(@"手机上网");

[UserInfoCenter shareInstance].netModel = @"手机自带网络";//我用自己的单例存起来

break;

default:

break;

}

}

6.以上就是使用Reachability的方法,有什么问题和写的不当之处敬请指出留言.

你可能感兴趣的:(苹果原生检测网络状态)