国产探花免费观看_亚洲丰满少妇自慰呻吟_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開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 屏东市| 库伦旗| 武鸣县| 泰安市| 丹寨县| 吴江市| 盘锦市| 双流县| 黄大仙区| 宜丰县| 高青县| 沾益县| 简阳市| 元阳县| 吴川市| 定远县| 黎城县| 和硕县| 蛟河市| 齐河县| 斗六市| 陕西省| 长海县| 巩义市| 鹰潭市| 彭阳县| 磐安县| 东港市| 安新县| 绥江县| 临沂市| 大同县| 巍山| 岑溪市| 柳河县| 宁国市| 德庆县| 金昌市| 于都县| 中超| 商城县|