服务报价 | 域名主机 | 网络营销 | 软件工具| [加入收藏]
当前位置: 主页 > 开发教程 > ios开发教程 >

iOS之Reachability和AFN时刻检测网络状态

时间:2017-01-14 23:38来源:未知 作者:好模板 点击:
今天iOS项目要做一个优化,把上报失败的数据保存起来,等有网络的时候就上传服务器,所以这里就要用到实时检测网络的功能了。刚开始我的思路是自己注册一个全局的通知来实现,

今天iOS项目要做一个优化,把上报失败的数据保存起来,等有网络的时候就上传服务器,所以这里就要用到实时检测网络的功能了。刚开始我的思路是自己注册一个全局的通知来实现,但是又想了解下别人的思路,于是上网搜了下就搜到了Reachability和AFN都可以实现的。但是我个人觉得AFN比较好用,当程序在后台运行时,也可以检测网络状态的改变,省去了不少的麻烦。

废话少说,进入主题吧~

一、AFNetworing检测网络

AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];

[manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {

    // 当网络状态改变时调用
    switch (status) {
        case AFNetworkReachabilityStatusUnknown:
            NSLog(@"未知网络");
            break;
        case AFNetworkReachabilityStatusNotReachable: 
            NSLog(@"没有网络");
            break;
        case AFNetworkReachabilityStatusReachableViaWWAN:
            NSLog(@"手机自带网络");
            break;
        case AFNetworkReachabilityStatusReachableViaWiFi: 
            NSLog(@"WIFI");
            break;
    }
}];

//开始监控
[manager startMonitoring]

二、Reachability

1.注册通知

[[NSNotificationCenter defaultCenter]addObserver:self 
selector:@selector(networkStateChange) name:kReachabilityChangedNotification object:nil];

// 创建Reachability
Reachability *reachability = [Reachability reachabilityForInternetConnection];

// 开始监控网络(一旦网络状态发生改变, 就会发出通知kReachabilityChangedNotification)
[reachability startNotifier];

2.监听方法

- (void)networkStateChange
{
// 1.检测网络状态
Reachability *wifi = [Reachability reachabilityForLocalWiFi];

// 2.检测手机是否能上网络
Reachability *connect = [Reachability reachabilityForInternetConnection];

// 3.判断网络状态
if ([wifi currentReachabilityStatus] != NotReachable) {
       NSLog(@"有wifi");
   } 
  else if ([connect currentReachabilityStatus] != NotReachable) {
       NSLog(@"使用手机自带网络进行上网");
   } 
 else {
       NSLog(@"没有网络");
   }
}

以上为两种检测网络状态的方法,我个人觉得AFN比较好用,希望对大家有所帮助。

(责任编辑:好模板)
顶一下
(0)
0%
踩一下
(2)
100%
------分隔线----------------------------
栏目列表
热点内容