iOS之Reachability和AFN時刻檢測網(wǎng)絡狀態(tài)

今天項目要做一個優(yōu)化,把上報失敗的數(shù)據(jù)保存起來,等有網(wǎng)絡的時候就上傳服務器,所以這里就要用到實時檢測網(wǎng)絡的功能了。剛開始我的思路是自己注冊一個全局的通知來實現(xiàn),但是又想了解下別人的思路,于是上網(wǎng)搜了下就搜到了Reachability和AFN都可以實現(xiàn)的。但是我個人覺得AFN比較好用,當程序在后臺運行時,也可以檢測網(wǎng)絡狀態(tài)的改變,省去了不少的麻煩。


廢話少說,進入主題吧~

一、AFNetworing檢測網(wǎng)絡
AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

    // 當網(wǎng)絡狀態(tài)改變時調(diào)用
    switch (status) {
        case AFNetworkReachabilityStatusUnknown:
            NSLog(@"未知網(wǎng)絡");
            break;
        case AFNetworkReachabilityStatusNotReachable: 
            NSLog(@"沒有網(wǎng)絡");
            break;
        case AFNetworkReachabilityStatusReachableViaWWAN:
            NSLog(@"手機自帶網(wǎng)絡");
            break;
        case AFNetworkReachabilityStatusReachableViaWiFi: 
            NSLog(@"WIFI");
            break;
    }
}];

//開始監(jiān)控
[manager startMonitoring]    
二、Reachability
1.注冊通知
[[NSNotificationCenter defaultCenter]addObserver:self 
selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

// 創(chuàng)建Reachability
Reachability *reachability = [Reachability reachabilityForInternetConnection];

// 開始監(jiān)控網(wǎng)絡(一旦網(wǎng)絡狀態(tài)發(fā)生改變, 就會發(fā)出通知kReachabilityChangedNotification)
[reachability startNotifier];
2.監(jiān)聽方法
- (void)networkStateChange
{
// 1.檢測網(wǎng)絡狀態(tài)
Reachability *wifi = [Reachability reachabilityForLocalWiFi];

// 2.檢測手機是否能上網(wǎng)絡
Reachability *connect = [Reachability reachabilityForInternetConnection];

// 3.判斷網(wǎng)絡狀態(tài)
if ([wifi currentReachabilityStatus] != NotReachable) {
       NSLog(@"有wifi");
   } 
  else if ([connect currentReachabilityStatus] != NotReachable) {
       NSLog(@"使用手機自帶網(wǎng)絡進行上網(wǎng)");
   } 
 else {
       NSLog(@"沒有網(wǎng)絡");
   }
}

以上為兩種檢測網(wǎng)絡狀態(tài)的方法,我個人覺得AFN比較好用,希望對大家有所幫助。

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

推薦閱讀更多精彩內(nèi)容