亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

iOS實時監(jiān)控網(wǎng)絡狀態(tài)的改變

 更新時間:2016年08月12日 11:37:19   作者:Running2snail  
這篇文章主要為大家詳細介紹了iOS實時監(jiān)控網(wǎng)絡狀態(tài)的改變的相關(guān)資料,感興趣的小伙伴們可以參考一下

在網(wǎng)絡應用中,有的時候需要對用戶設備的網(wǎng)絡狀態(tài)進行實時監(jiān)控,有兩個目的:
 (1)讓用戶了解自己的網(wǎng)絡狀態(tài),防止一些誤會(比如怪應用無能)
 (2)根據(jù)用戶的網(wǎng)絡狀態(tài)進行智能處理,節(jié)省用戶流量,提高用戶體驗 
  WIFI網(wǎng)絡:自動下載高清圖片 
  4G/3G網(wǎng)絡:只下載縮略圖 
  沒有網(wǎng)絡:只顯示離線的緩存數(shù)據(jù) 

 常用的有以下兩種方法: 
 ?。?)、使用蘋果觀法提供的檢測iOS設備網(wǎng)絡環(huán)境用的庫 Reachablity 
 ?。?)、使用AFN框架中的AFNetworkReachabilityManager來監(jiān)聽網(wǎng)絡狀態(tài)的改變 

一、蘋果官方提供了一個叫Reachability的示例程序,便于開發(fā)者檢測網(wǎng)絡狀態(tài) 
使用之前請從Apple網(wǎng)站下載示例:http://xiazai.jb51.net/201608/yuanma/Reachability(jb51.net).rar

然后將Reachability.h 和 Reachability.m 加到自己的項目中,并引用 SystemConfiguration.framework,就可以使用了。
Reachability 中定義了3種網(wǎng)絡狀態(tài): 

typedef enum : NSInteger {

  NotReachable = 0, //無連接
  ReachableViaWiFi, //使用3G/GPRS網(wǎng)絡
  ReachableViaWWAN //使用WiFi網(wǎng)絡

} NetworkStatus;

我們可以在程序啟動以后啟動實時監(jiān)測 

// AppDelegate.m


@interface AppDelegate ()

@property (nonatomic, strong) Reachability *reachability;

@end

// 程序啟動器,啟動網(wǎng)絡監(jiān)視
- (void)applicationDidFinishLaunching:(UIApplication *)application {

  // 設置網(wǎng)絡檢測的站點
    NSString *remoteHostName = @"www.apple.com";
  self.reachability = [Reachability reachabilityWithHostName:remoteHostName];
  // 設置網(wǎng)絡狀態(tài)變化時的通知函數(shù)
  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:)
                       name:@"kNetworkReachabilityChangedNotification" object:nil];
  [self updateStatus];
}


- (void)reachabilityStatusChange:(NSNotification *)notification
{
  Reachability* curReach = [notification object];
  NSParameterAssert([curReach isKindOfClass:[Reachability class]]);
  [self updateInterfaceWithReachability:curReach];
}

- (void)updateInterfaceWithReachability:(Reachability *)reachability
{
  if (reachability == _reachability)
  {
    NetworkStatus netStatus = [reachability currentReachabilityStatus];
    switch (netStatus)
    {
      case NotReachable:   {
        NSLog(@"沒有網(wǎng)絡!");
        break;
      }
      case ReachableViaWWAN: {
        NSLog(@"4G/3G");
        break;
      }
      case ReachableViaWiFi: {
        NSLog(@"WiFi");
        break;
      }
    }
  }
}


- (void)dealloc
{
   [_reachability stopNotifier];
  [[NSNotificationCenter defaultCenter] removeObserver:self name:kReachabilityChangedNotification object:nil];
} 

二、使用AFN框架中的AFNetworkReachabilityManager來監(jiān)聽網(wǎng)絡狀態(tài)的改變

//使用AFN框架來檢測網(wǎng)絡狀態(tài)的改變
-(void)AFNReachability
{
  //1.創(chuàng)建網(wǎng)絡監(jiān)聽管理者
  AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

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

      default:
        break;
    }
  }];

  //3.開始監(jiān)聽
  [manager startMonitoring];
}

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論