一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語(yǔ)言|JavaScript|易語(yǔ)言|vb.net|

服務(wù)器之家 - 編程語(yǔ)言 - IOS - iOS實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)的改變

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

2021-01-24 14:58Running2snail IOS

這篇文章主要為大家詳細(xì)介紹了iOS實(shí)時(shí)監(jiān)控網(wǎng)絡(luò)狀態(tài)的改變的相關(guān)資料,感興趣的小伙伴們可以參考一下

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

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

一、蘋果官方提供了一個(gè)叫Reachability的示例程序,便于開發(fā)者檢測(cè)網(wǎng)絡(luò)狀態(tài) 
使用之前請(qǐng)從Apple網(wǎng)站下載示例:Reachability.rar

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

?
1
2
3
4
5
6
7
typedef enum : NSInteger {
 
  NotReachable = 0, //無(wú)連接
  ReachableViaWiFi, //使用3G/GPRS網(wǎng)絡(luò)
  ReachableViaWWAN //使用WiFi網(wǎng)絡(luò)
 
} NetworkStatus;

我們可以在程序啟動(dòng)以后啟動(dòng)實(shí)時(shí)監(jiān)測(cè) 

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
// AppDelegate.m
 
 
@interface AppDelegate ()
 
@property (nonatomic, strong) Reachability *reachability;
 
@end
 
// 程序啟動(dòng)器,啟動(dòng)網(wǎng)絡(luò)監(jiān)視
- (void)applicationDidFinishLaunching:(UIApplication *)application {
 
  // 設(shè)置網(wǎng)絡(luò)檢測(cè)的站點(diǎn)
    NSString *remoteHostName = @"www.apple.com";
  self.reachability = [Reachability reachabilityWithHostName:remoteHostName];
  // 設(shè)置網(wǎng)絡(luò)狀態(tài)變化時(shí)的通知函數(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)絡(luò)!");
        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來(lái)監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
//使用AFN框架來(lái)檢測(cè)網(wǎng)絡(luò)狀態(tài)的改變
-(void)AFNReachability
{
  //1.創(chuàng)建網(wǎng)絡(luò)監(jiān)聽管理者
  AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
 
  //2.監(jiān)聽網(wǎng)絡(luò)狀態(tài)的改變
  /*
   AFNetworkReachabilityStatusUnknown     = 未知
   AFNetworkReachabilityStatusNotReachable   = 沒有網(wǎng)絡(luò)
   AFNetworkReachabilityStatusReachableViaWWAN = 3G
   AFNetworkReachabilityStatusReachableViaWiFi = WIFI
   */
  [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
    switch (status) {
      case AFNetworkReachabilityStatusUnknown:
        NSLog(@"未知");
        break;
      case AFNetworkReachabilityStatusNotReachable:
        NSLog(@"沒有網(wǎng)絡(luò)");
        break;
      case AFNetworkReachabilityStatusReachableViaWWAN:
        NSLog(@"3G");
        break;
      case AFNetworkReachabilityStatusReachableViaWiFi:
        NSLog(@"WIFI");
        break;
 
      default:
        break;
    }
  }];
 
  //3.開始監(jiān)聽
  [manager startMonitoring];
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持服務(wù)器之家。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: a国产在线 | 黄色a∨| 网友自拍偷拍 | 亚洲成人伦理 | 午夜一级毛片看看 | 国产精品成人麻豆专区 | 九九热在线视频观看这里只有精品 | 亚洲 综合 欧美在线视频 | 黑人巨大初黑人解禁作品 | 男女做受快插大片 | 日本成人黄色片 | 2020年精品国产午夜福利在线 | 美女无内裤下部黄 | 男人好大好硬好爽免费视频 | 成人网18免费网 | 艹艹逼| 操女人bb| 人人人人看人人人做人人 | 欧美成人禁片在线观看俄罗斯 | 狠狠狠地啪香蕉 | 欧美精品久久久久久久免费观看 | 国色天香社区在线 | 国产精品免费aⅴ片在线观看 | 91精品国产在线 | 亚洲欧美久久婷婷爱综合一区天堂 | 国产精品乱码高清在线观看 | 四虎精品成人a在线观看 | swag最新正在播放 | 亚洲天堂男人天堂 | 久久这里只有精品视频e | 日老逼 | 不卡一区二区三区 | 国产精品资源在线观看网站 | www.99热.com| 奇米网狠狠网 | 欧美贵妇videos办公室360 | 欧美日韩一区二区三在线 | 国产精品香蕉夜间视频免费播放 | a级特黄毛片免费观看 | 狠狠色综合久久婷婷色天使 | 91精品国产亚洲爽啪在线影院 |