網(wǎng)絡(luò)狀態(tài)的監(jiān)聽

網(wǎng)絡(luò)狀態(tài)改變的監(jiān)聽方法

  • 通過蘋果蘋果提供的Reachability類來實現(xiàn)監(jiān)聽
    注意 :
  1. 這個類通常情況下,要想實現(xiàn)持續(xù)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變,需要和通知一起使用
  2. 只有網(wǎng)絡(luò)狀態(tài)發(fā)生變化的時候才會被調(diào)用,所以沒有辦法獲取初始的網(wǎng)絡(luò)狀態(tài)
//使用蘋果提供的Reachability來檢測網(wǎng)絡(luò)狀態(tài),如果要持續(xù)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的概念,需要結(jié)合通知一起使用。
//提供下載地址:
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event
{
    //1.注冊一個通知
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkChange) name:kReachabilityChangedNotification object:nil];
    //2.拿到一個對象,然后調(diào)用開始監(jiān)聽方法
    Reachability *r = [Reachability reachabilityForInternetConnection];
    [r startNotifier];
    //持有該對象,不要讓該對象釋放掉
    self.r = r;
}
//當控制器釋放的時候,移除通知的監(jiān)聽
-(void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
-(void)networkChange
{
    //獲取當前網(wǎng)絡(luò)的狀態(tài)
   if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus == ReachableViaWWAN)
    {
        NSLog(@"當前網(wǎng)絡(luò)狀態(tài)為3G");
        return;
    }
    if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus == ReachableViaWiFi)
    {
        NSLog(@"當前網(wǎng)絡(luò)狀態(tài)為wifi");
        return;
    }
    NSLog(@"當前沒有網(wǎng)絡(luò)");
}
  • 通過使用AFN框架來監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變
    注意 : **
    通過AFN框架的AFNetworkReachabilityManager類實現(xiàn)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變,可以在
    程序剛啟動的時候就獲取網(wǎng)絡(luò)的狀態(tài),并且可以實時監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變**.
-(void)AFNReachability
{
    //1.創(chuàng)建網(wǎng)絡(luò)監(jiān)聽管理者
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

    //2.監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變
    /*
     AFNetworkReachabilityStatusUnknown          = 未知
     AFNetworkReachabilityStatusNotReachable     = 沒有網(wǎng)絡(luò)
     AFNetworkReachabilityStatusReachableViaWWAN = 3G
     AFNetworkReachabilityStatusReachableViaWiFi = WIFI
     */
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        switch (status) {
            case AFNetworkReachabilityStatusUnknown:
                NSLog(@"未知");
                break;
            case AFNetworkReachabilityStatusNotReachable:
                NSLog(@"沒有網(wǎng)絡(luò)");
                break;
            case AFNetworkReachabilityStatusReachableViaWWAN:
                NSLog(@"3G");
                break;
            case AFNetworkReachabilityStatusReachableViaWiFi:
                NSLog(@"WIFI");
                break;

            default:
                break;
        }
    }];

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

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

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