iOS10在app首次启动进行网络请求时会向用户请求网络权限,此时我们可以根据需要监听网络状态是否发生变化来做对应的处理逻辑。
监听网络状态,我们可以使用第三方"Reachability"
导入第三方
#import "Reachability/Reachability.h"
添加监听通知,启动通知
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
Reachability *connect = [Reachability reachabilityForInternetConnection];
[connect startNotifier];
监听通知的方法
- (void)networkStateChange {
Reachability *reachability = [Reachability reachabilityWithHostName:@"www.apple.com"];
switch ([reachability currentReachabilityStatus]) {
case NotReachable:{
NSLog(@"[Reachability Test]======No Network");
}
case ReachableViaWiFi:{
NSLog(@"[Reachability Test]======WI-FI Network");
}
break;
case ReachableViaWWAN:{
NSLog(@"[Reachability Test]======Cellular Network");
}
break;
default:
break;
}
}
就此网络状态监听功能完成。
当我们第一次启动app时,app处于无网络状态,此时进行网络请求时,会弹出权限提醒,供用户选择权限
若此时用户选择不允许,则app的网络状态不会发生变化,不会触发app网络状态发生改变的通知。
若此时用户选择“仅限无线局域网”或者“无线局域网与蜂窝网络”,则networkStateChange方法里会监听到网络状态发生变化,ReachableViaWiFi或者ReachableViaWWAN,根据用户手机当前网络状态来确定为ReachableViaWWAN(手机流量)或者ReachableViaWiFi(Wi-Fi)。此时程序员可以根据业务需求来进行对应的操作。
如果此时用户没有打开Wi-Fi网络连接,且用户选择“仅限无线局域网”,则也不会触发app网络状态发生改变的通知。因为用户app此时还处于无网络状态。
流程如下:
![](https://img.haomeiwen.com/i3222019/91e2751d0cd78e20.png)
网友评论