iOS 關于網絡狀態問題(結合其他人的資料)

1.首先添加框架SystemConfiguration.framework。

2.蘋果官方提供了一個叫Reachability的示例程序,便于開發者檢測網絡狀態

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

下載完后,導入項目中

3.在AppDelegate.h定義一個全局變量 ?@property BOOL isConnect; 判斷網絡狀態

4.在AppDelegate.m增加通知中心:

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];

hostReach = [Reachability reachabilityForInternetConnection];

[self updateInterfaceWithReachability:hostReach];

[hostReach startNotifier];

5.通知中心響應的事件,并給isConnect 賦值(PS:每次網絡改變都會調用這個函數)

-(void)reachabilityChanged:(NSNotification*)notification

{

// 1.檢測wifi狀態

Reachability *wifi = [Reachability reachabilityForLocalWiFi];

// 2.檢測手機是否能上網絡(WIFI\3G\2.5G)

Reachability *conn = [Reachability reachabilityForInternetConnection];

// 3.判斷網絡狀態

if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi

self.isConnect = YES;

NSLog(@"有wifi%d",self.isConnect);

} else if ([conn currentReachabilityStatus] != NotReachable) { // 沒有使用wifi, 使用手機自帶網絡進行上網

NSLog(@"使用手機自帶網絡進行上網");

self.isConnect = YES;

} else { // 沒有網絡

self.isConnect = NO;

NSLog(@"沒有網絡%d",self.isConnect);

}

}


6.程序啟動是檢測網絡狀態 ,并給isConnect 賦值

-(void)updateInterfaceWithReachability:(Reachability*)reach

{

//對連接改變做出響應的處理動作。

NetworkStatus status=[reach currentReachabilityStatus];

if (status== NotReachable) { //沒有連接到網絡就彈出提實況

UIAlertView *alert= [[UIAlertView alloc] initWithTitle:@"提示"

message:@"請檢查網絡連接狀態"

delegate:nil

cancelButtonTitle:@"好" otherButtonTitles:nil];

[alert show];

self.isConnect = NO;

NSLog(@"沒網了%d",self.isConnect);

}else {

self.isConnect = YES;

NSLog(@"有網了%d",self.isConnect);

}

}

在想要檢測網絡狀態的類里面,實例化AppDelegate對象,調用isConnect。

AppDelegate ? *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容