Reachability檢測網(wǎng)絡(luò)狀態(tài)-靜態(tài)檢測和實(shí)時監(jiān)控

檢測網(wǎng)絡(luò)狀態(tài)

題記:最近在帶子公司的人進(jìn)行一些老項(xiàng)目的優(yōu)化,老項(xiàng)目里面網(wǎng)絡(luò)大部分使用ASI和SBJson,ASI依賴于Reachability,所以再次普及一下Reachability和ASI的知識,上一次寫Reachability和ASI的文章三年前了,時光荏苒,白駒過隙,時間轉(zhuǎn)瞬即逝,勸君惜取少年時

  • 在網(wǎng)絡(luò)應(yīng)用中,需要對用戶設(shè)備的網(wǎng)絡(luò)狀態(tài)進(jìn)行實(shí)時監(jiān)控,目的是
  • 讓用戶了解自己的網(wǎng)絡(luò)狀態(tài),防止一些誤會(比如怪應(yīng)用無能)
  • 根據(jù)用戶的網(wǎng)絡(luò)狀態(tài)進(jìn)行智能處理,節(jié)省用戶流量,提高用戶體驗(yàn)
  • WIFI\4G網(wǎng)絡(luò):自動下載高清圖片
  • 低速網(wǎng)絡(luò):只下載縮略圖
  • 沒有網(wǎng)絡(luò):只顯示離線的緩存數(shù)據(jù)
  • 蘋果官方提供了一個叫Reachability的示例程序,便于開發(fā)者檢測網(wǎng)絡(luò)狀態(tài)
    https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip

Reachability類:

1.這個類用于檢測當(dāng)前網(wǎng)絡(luò)狀態(tài),它不是SDK的一部分,可以從蘋果網(wǎng)站上下載Reachability.zip文件,解壓之。

2.引用Reachability類

(1)把Reachability.h和Reachability.m文件拖到項(xiàng)目中。

(2)添加框架:SystemConfiguration.framework。

(3)非ARC文件:添加-fno-objc-arc。

3.Reachability的使用

#import "ViewController.h"
#import "Reachability.h"

@interface ViewController ()
@property (nonatomic, strong) Reachability *conn;
@end

@implementation HMViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];
    self.conn = [Reachability reachabilityForInternetConnection];
    [self.conn startNotifier];
}

- (void)dealloc
{
    [self.conn stopNotifier];
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

- (void)networkStateChange
{
    [self checkNetworkState];
}

// 用WIFI
// [wifi currentReachabilityStatus] != NotReachable
// [conn currentReachabilityStatus] != NotReachable

// 沒有用WIFI, 只用了手機(jī)網(wǎng)絡(luò)
// [wifi currentReachabilityStatus] == NotReachable
// [conn currentReachabilityStatus] != NotReachable

// 沒有網(wǎng)絡(luò)
// [wifi currentReachabilityStatus] == NotReachable
// [conn currentReachabilityStatus] == NotReachable

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{

}

- (void)checkNetworkState
{
    // 1.檢測wifi狀態(tài)
    Reachability *wifi = [Reachability reachabilityForLocalWiFi];
    
    // 2.檢測手機(jī)是否能上網(wǎng)絡(luò)(WIFI\3G\2.5G)
    Reachability *conn = [Reachability reachabilityForInternetConnection];
    
    // 3.判斷網(wǎng)絡(luò)狀態(tài)
    if ([wifi currentReachabilityStatus] != NotReachable) { // 有wifi
        NSLog(@"有wifi");
        
    } else if ([conn currentReachabilityStatus] != NotReachable) { // 沒有使用wifi, 使用手機(jī)自帶網(wǎng)絡(luò)進(jìn)行上網(wǎng)
        NSLog(@"使用手機(jī)自帶網(wǎng)絡(luò)進(jìn)行上網(wǎng)");
        
    } else { // 沒有網(wǎng)絡(luò)
        
        NSLog(@"沒有網(wǎng)絡(luò)");
    }
}
@end

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

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

  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,342評論 4 61
  • 1.圖片瀏覽控件MWPhotoBrowser 實(shí)現(xiàn)了一個照片瀏覽器類似 iOS 自帶的相冊應(yīng)用,可顯示來自手機(jī)的圖...
    萬忍閱讀 1,571評論 0 6
  • 自用收藏 原文:http://www.th7.cn/Program/IOS/201606/884245.shtml...
    西瓜皮奧特曼閱讀 2,345評論 0 16
  • 從怡和星國際沿北海路西側(cè)的人行道北行,直至福壽街,一路走來,路邊的風(fēng)景猶如一副美麗的畫卷,讓人流連忘返,也帶給了我...
    心道居士閱讀 869評論 0 2
  • 我的新生活,到了第九天的時候,就趴了。這天是我連續(xù)工作八天,第一天休息,也是我生日的第二天。孤單是窗外淅淅瀝瀝的骯...
    源心愛閱讀 792評論 0 0

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