最近在給應用添加網絡監聽的時候,發現在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;
}