iOS 实时监听app的网络连接状态

实际iOS开发中,在网络通信中我们大部分使用第三方(只谈短链),譬如 AFNetworking、ASIHttpRequest(这个停更了,想必现在没多少人用),swift的 Alamofire 等。

     楼主有简单的耍了下主流的app,发现绝大部分都没有对 网络状态做实时的监听,QQ 和 微信 有做,但是这2个用的都是socket,所以第一时间侦听到了网络状态。在无网络情况下,重新连接到网络的过程中,目前看了 ,也只有 QQ 和 微信 做了 实时连接(app做了实时响应)。其他,支付宝,淘宝,京东,饿了么,等等 (BOSS直聘只能WIFI下可以使用,3G/4G下用不了,什么鬼?) 都需要用户主观的刷新页面。 个人感觉 体验不是很好。

     不要求所有的页面做到页面的及时刷新,但主要页面,或是 首页 你能给个响应吧。我重连了网络,app就不能自己刷新下么。

     APPLE 有给我们提供api,当然我们可以用现成的 RealReachability 、AFNetworkReachabilityManager(这货AFNetworking提供的)。有的可能需要判别2G/3G/4G 以及WIFI,给个传送门:http://www.jianshu.com/p/efcfa3c87306   。

     我们就拿 AFNetworkReachabilityManager 做个示例:

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
AFNetworkReachabilityManager *afNetworkReachabilityManager = [AFNetworkReachabilityManager sharedManager];
     
     //    [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(afNetworkStatusChanged:) name:AFNetworkingReachabilityDidChangeNotification object:nil];//这个可以放在需要侦听的页面
     [afNetworkReachabilityManager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
         
         switch  (status) {
             case  AFNetworkReachabilityStatusNotReachable:{
                 NSLog (@ "网络不通:%@" ,@(status) );
                 break ;
             }
             case  AFNetworkReachabilityStatusReachableViaWiFi:{
                 NSLog (@ "网络通过WIFI连接:%@" ,@(status));
                 break ;
             }
                 
             case  AFNetworkReachabilityStatusReachableViaWWAN:{
                 NSLog (@ "网络通过无线连接:%@" ,@(status) );
                 break ;
             }
             default :
                 break ;
         }
         
         NSLog (@ "网络状态数字返回:%@" ,@(status));
         NSLog (@ "网络状态返回: %@" , AFStringFromNetworkReachabilityStatus(status));
         
         NSLog (@ "isReachable: %@" ,@([AFNetworkReachabilityManager sharedManager].isReachable));
         NSLog (@ "isReachableViaWWAN: %@" ,@([AFNetworkReachabilityManager sharedManager].isReachableViaWWAN));
         NSLog (@ "isReachableViaWiFi: %@" ,@([AFNetworkReachabilityManager sharedManager].isReachableViaWiFi));
         
     }];
1
[afNetworkReachabilityManager startMonitoring];   //开启网络监视器;

 我们只要在AppDelegate 里面 调用一下就好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值