国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS實時監控網絡狀態的改變

2020-07-26 03:16:38
字體:
來源:轉載
供稿:網友

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

 常用的有以下兩種方法: 
  (1)、使用蘋果觀法提供的檢測iOS設備網絡環境用的庫 Reachablity 
  (2)、使用AFN框架中的AFNetworkReachabilityManager來監聽網絡狀態的改變 

一、蘋果官方提供了一個叫Reachability的示例程序,便于開發者檢測網絡狀態 
使用之前請從Apple網站下載示例:http://xiazai.VeVB.COm/201608/yuanma/Reachability(VeVB.COm).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];} 

二、使用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];}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 崇左市| 岐山县| 西畴县| 呼伦贝尔市| 三河市| 宜宾市| 遂宁市| 潼关县| 罗源县| 贵阳市| 鹿泉市| 嘉善县| 县级市| 来安县| 海阳市| 信丰县| 长丰县| 龙川县| 建湖县| 青铜峡市| 富川| 江达县| 蚌埠市| 临沧市| 武陟县| 新化县| 塔城市| 滨海县| 集安市| 舒城县| 沂源县| 胶南市| 兴安县| 右玉县| 常山县| 井研县| 萨迦县| 汉源县| 荃湾区| 浙江省| 吉水县|