Reachability使用 (網(wǎng)絡(luò)檢測(cè))

網(wǎng)絡(luò)狀況監(jiān)測(cè)三方庫(kù):Reachability

圖片來(lái)源于網(wǎng)絡(luò)



頭文件#import "Reachability.h"


添加一個(gè)屬性:(單例)

@property (nonatomic, strong) Reachability *connect;


使用:

- (void)viewDidLoad {
    //通知 檢測(cè)網(wǎng)絡(luò)狀態(tài)改變
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(netStateChange) name:kReachabilityChangedNotification object:nil];
    self.connect = [Reachability reachabilityForInternetConnection]; //單例對(duì)象
    [self.connect startNotifier]; 
}

- (void)netStateChange { //通知檢測(cè)(網(wǎng)絡(luò)改變)的方法
    [self checkNetState];
}

- (void)checkNetState {
    // 1.檢測(cè)WiFi狀態(tài)
    Reachability *wifiConnect = [Reachability reachabilityForLocalWiFi];
    // 2.檢測(cè)手機(jī)是否能上網(wǎng)絡(luò)(WiFi\3G\2.5G)
    Reachability *connect = [Reachability reachabilityForInternetConnection];

    //reachabilityForLocalWiFi、reachabilityForInternetConnection 檢測(cè)的網(wǎng)絡(luò)情況 相同
    //0:NotReachable, 1:ReachableViaWWAN, 2:ReachableViaWiFi
    NSLog(@"%ld",(long)[wifiConnect currentReachabilityStatus]);
    NSLog(@"%ld",(long)[connect currentReachabilityStatus]);


    // 3.判斷網(wǎng)絡(luò)狀態(tài)
     if ([connect currentReachabilityStatus] == ReachableViaWiFi) {
        // 有WiFi
        NSLog(@"使用WiFi");

    } else if ([connect currentReachabilityStatus] == ReachableViaWWAN) {
         // 沒(méi)有使用WiFi, 使用手機(jī)自帶網(wǎng)絡(luò)
         NSLog(@"使用手機(jī)自帶網(wǎng)絡(luò),進(jìn)行上網(wǎng)");

    } else {
         // 沒(méi)有網(wǎng)絡(luò)
         NSLog(@"沒(méi)有網(wǎng)絡(luò)");

    }
}




// 析構(gòu)方法:移除通知對(duì)象
- (void)dealloc {
    [self.connect stopNotifier]; //停止Reachability
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}










三方庫(kù)“AFNetworking”的網(wǎng)絡(luò)監(jiān)測(cè):

三方庫(kù)“AFNetworking”的類似功能,對(duì)比:

頭文件:#import "AFNetworking.h"

//AFNetworking監(jiān)測(cè)網(wǎng)絡(luò)狀態(tài)
-(void)checkNetStatus { 
   //網(wǎng)絡(luò)監(jiān)控句柄 (單例對(duì)象)
   AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

   //要監(jiān)控網(wǎng)絡(luò)連接狀態(tài),必須先調(diào)用單例的startMonitoring方法
   [manager startMonitoring];

   [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) { 
       //status:          /** 網(wǎng)絡(luò)狀態(tài) 監(jiān)控 */
       //AFNetworkReachabilityStatusUnknown          = -1,  未知
       //AFNetworkReachabilityStatusNotReachable     = 0,   未連接
       //AFNetworkReachabilityStatusReachableViaWWAN = 1,   3G
       //AFNetworkReachabilityStatusReachableViaWiFi = 2,   無(wú)線連接
       NSLog(@"%ld", (long)status);
   }];

}



所以項(xiàng)目中有了AFNetWorking,就無(wú)需再使用Reachability了!








goyohol's essay

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容