最近在给应用添加网络监听的时候,发现在iOS11中的控制中心关闭WiFi和移动数据时,Reachability
检测到的状态还是WiFi连接状态。发现是公司项目里用的版本太旧没有适配iOS11系统,去官网下载了最新的替换就可以了。(Reachability下载地址)
如果需要单个页面监听网络状态的变化,参考实例代码。
下面是全局监听的做法:
- 在
AppDelegate
里面添加一个Reachability的实例属性。这里需要定义一个属性,而且这个属性需要在应用周期内存活,这样才可以对网络进行监听和发出通知。 -
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
方法里面开启网络监听。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
NSString *remoteHostName = @"www.apple.com";
self.hostReachability = [Reachability reachabilityWithHostName:remoteHostName];
[self.hostReachability startNotifier];
return YES;
}