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

首頁 > 系統 > iOS > 正文

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

2019-10-21 18:53:11
字體:
來源:轉載
供稿:網友

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

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

一、蘋果官方提供了一個叫Reachability的示例程序,便于開發者檢測網絡狀態 

然后將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];}

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


注:相關教程知識閱讀請移步到IOS開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 黔东| 忻州市| 黄大仙区| 洪湖市| 皮山县| 唐海县| 文山县| 河南省| 仁寿县| 刚察县| 镇原县| 丹巴县| 渭源县| 永丰县| 察雅县| 郧西县| 巍山| 新龙县| 丹东市| 罗江县| 乐陵市| 鄂州市| 南涧| 峨山| 呼伦贝尔市| 柳州市| 萨嘎县| 潼南县| 南阳市| 崇明县| 沙洋县| 临颍县| 威宁| 扶绥县| 阜新| 兖州市| 读书| 酒泉市| 酒泉市| 宽城| 那曲县|