你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS及時監控收集狀況的轉變

iOS及時監控收集狀況的轉變

編輯:IOS開發綜合

在收集運用中,有的時刻須要對用戶裝備的收集狀況停止及時監控,有兩個目標:
 (1)讓用戶懂得本身的收集狀況,避免一些誤解(好比怪運用能干)
 (2)依據用戶的收集狀況停止智能處置,節儉用戶流量,進步用戶體驗 
  WIFI收集:主動下載高清圖片 
  4G/3G收集:只下載縮略圖 
  沒有收集:只顯示離線的緩存數據 

 經常使用的有以下兩種辦法: 
  (1)、應用蘋果不雅法供給的檢測IOS裝備收集情況用的庫 Reachablity 
  (2)、應用AFN框架中的A.networkReachabilityManager來監聽收集狀況的轉變 

1、蘋果官方供給了一個叫Reachability的示例法式,便於開辟者檢測收集狀況 
應用之前請從Apple網站下載示例:http://xiazai.jb51.net/201608/yuanma/Reachability(jb51.net).rar

然後將Reachability.h 和 Reachability.m 加到本身的項目中,並援用 SystemConfiguration.framework,便可以應用了。
Reachability 中界說了3種收集狀況: 

typedef enum : NSInteger {

  NotReachable = 0, //無銜接
  ReachableViaWiFi, //應用3G/GPRS收集
  ReachableViaWWAN //應用WiFi收集

} NetworkStatus;

我們可以在法式啟動今後啟動及時監測 

// AppDelegate.m


@interface AppDelegate ()

@property (nonatomic, strong) Reachability *reachability;

@end

// 法式啟動器,啟動收集監督
- (void)applicationDidFinishLaunching:(UIApplication *)application {

  // 設置收集檢測的站點
    NSString *remoteHostName = @"www.apple.com";
  self.reachability = [Reachability reachabilityWithHostName:remoteHostName];
  // 設置收集狀況變更時的告訴函數
  [[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(@"沒有收集!");
        break;
      }
      case ReachableViaWWAN: {
        NSLog(@"4G/3G");
        break;
      }
      case ReachableViaWiFi: {
        NSLog(@"WiFi");
        break;
      }
    }
  }
}


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

2、應用AFN框架中的AFNetworkReachabilityManager來監聽收集狀況的轉變

//應用AFN框架來檢測收集狀況的轉變
-(void)AFNReachability
{
  //1.創立收集監聽治理者
  AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

  //2.監聽收集狀況的轉變
  /*
   AFNetworkReachabilityStatusUnknown     = 未知
   AFNetworkReachabilityStatusNotReachable   = 沒有收集
   AFNetworkReachabilityStatusReachableViaWWAN = 3G
   AFNetworkReachabilityStatusReachableViaWiFi = WIFI
   */
  [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
      case AFNetworkReachabilityStatusUnknown:
        NSLog(@"未知");
        break;
      case AFNetworkReachabilityStatusNotReachable:
        NSLog(@"沒有收集");
        break;
      case AFNetworkReachabilityStatusReachableViaWWAN:
        NSLog(@"3G");
        break;
      case AFNetworkReachabilityStatusReachableViaWiFi:
        NSLog(@"WIFI");
        break;

      default:
        break;
    }
  }];

  //3.開端監聽
  [manager startMonitoring];
}

以上就是本文的全體內容,願望對年夜家的進修有所贊助,也願望年夜家多多支撐本站。

【iOS及時監控收集狀況的轉變】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved