iOS网络-06-监听Iphone的网络状态

使用系统的方法来监听网络状态


  • 系统的方法是通过通知机制来实现网络状态的监听
  • 实现网络状态监听的步骤
    • 定义Reachability类型的成员变量来保存网络的状态
    @property (nonatomic, strong) Reachability *reachability;
    • 注册为通知中心的的观察者
    // 在通知中心注册观察者
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkStatus) name:kReachabilityChangedNotification object:nil];
    /**
    * getNetworkStatus:监听到通知的回调方法
    * kReachabilityChangedNotification:通知的类型,即网络状态发生改变时,触发通知
    * object:传递给getNetworkStatus回调方法的参数
    */
    // 获取并保存网络状态
    self.reachability = [Reachability reachabilityForInternetConnection];
    // 开始监听
    [self.reachability startNotifier];
    • 在监听到通知的触发方法中判断网络的状态
    - (void)getNetworkStatus
    {
        if ([Reachability reachabilityForLocalWiFi].currentReachabilityStatus != NotReachable)
        {
            NSLog(@"是WIFI");
        }
        else if ([Reachability reachabilityForInternetConnection].currentReachabilityStatus != NotReachable)
        {
            NSLog(@"是手机自带网络");
        }
        else
        {
            NSLog(@"网络有问题");
        }
    }
    • 将观察者从通知中心移除,停止监听,清空网络监听对象
    - (void)dealloc
    {
        [[NSNotificationCenter defaultCenter] removeObserver:self];
        [self.reachability stopNotifier];
        self.reachability = nil;
    }

使用AFNetworking监听网络状态


  • 通过AFN监听网络状态比较简单
  • 实现网络状态监听的
    • 获取AFNetworkReachabilityManager的实例
    AFNetworkReachabilityManager *manager = [AFNetworkReachabilityManager sharedManager];
    • 设置manager在网络发生变化的时回调的Block
    [manager setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
        NSLog(@"----当前网络状态---%zd", status);
    }];
    /**
    * status:表示当前网络的状态,是个枚举类型变量,具有以下取值
    *       AFNetworkReachabilityStatusUnknown = -1
    *       AFNetworkReachabilityStatusNotReachable = 0
    *       AFNetworkReachabilityStatusReachableViaWWAN = 1
    *       AFNetworkReachabilityStatusReachableViaWiFi = 2
    */
    • 开始监听
    [manager startMonitoring];

    本博客的最新状态将会同步到新浪微博账号:世俗孤岛

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-27 11:53:52

iOS网络-06-监听Iphone的网络状态的相关文章

OC - 18.监听iPhone的网络状态

使用系统的方法来监听网络状态 系统的方法是通过通知机制来实现网络状态的监听 实现网络状态监听的步骤 定义Reachability类型的成员变量来保存网络的状态 @property (nonatomic, strong) Reachability *reachability; 注册为通知中心的的观察者 // 在通知中心注册观察者 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(getNetworkS

监听iPhone的通话状态之---CoreTelephony.framework

近期在做一个网络电话会议,需要判断手机的通话状态,通过在网上查找资料找到一个苹果私有框架,下面简单介绍如何使用: 1,要在项目中添加CoreTelephony.framework这个框架,怎么添加如下图: 点击“+”,添加即可: 2,在你需要用到该功能的class中,导入如下两个头文件 #import <CoreTelephony/CTCallCenter.h>#import <CoreTelephony/CTCall.h> 3,使用代码如下: CTCallCenter *cent

Python黑客编程基础3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: •      操作系统:kali Linux 2.0 •      编程工具:Wing IDE •      Python版本:2.7.9 •      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

Python黑客编程3网络数据监听和过滤

Python黑客编程3网络数据监听和过滤 课程的实验环境如下: ?      操作系统:kali Linux 2.0 ?      编程工具:Wing IDE ?      Python版本:2.7.9 ?      涉及到的主要python模块:pypcap,dpkt,scapy,scapy-http 涉及到的几个python网络抓包和分析的模块,dpkt和scapy在kali linux 2.0 中默认已经被安装,如果你的系统中没有需要手动安装一下,下面是软件包安装的简单说明. 在kali下

ios ---键盘的监听事件

//在view将要出现的时候重载viewWillAppear方法添加通知 监听事件 keyboardWillShow:  keyboardWillHide: - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:

Android中检查、监听电量和充电状态的方法

Android中检查.监听电量和充电状态的方法 这篇文章主要介绍了Android中检查.监听电量和充电状态的方法,如判断当前充电状态.监听充电状态的改变.判断当前剩余电量等,需要的朋友可以参考下 当你在更改后台更新频率来减少这些更新对电池寿命的影响时,检查当前电量和充电状态是一个好的开始. 电池寿命通过剩余电量和充电状态来影响应用更新的执行.当用交流电充电时,执行更新操作对设备的影响是微不足道的,所以在大多数案例里,你可以把更新频率调到最快.如果设备不在充电,降低更新频率可以帮助延长电池寿命.

监听Listview的滚动状态,是否滚动到了顶部或底部

/** * @author:Jack Tony * @description : 监听listview的滑动状态,如果到了顶部就刷新数据 * @date :2015年2月9日 */ private class ListViewListener implements OnScrollListener { @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int t

iOS开发之监听网络连接,改变,断开

做iOS开发时,我们需要监控/监听网络状况,苹果提供了Reachability.h, Reachability.m. 导入Reachability.h 我们可以在 MainViewController的viewDidLoad方法内部写上: [self checkReachability]; 之后,具体方法如下 #pragma mark #pragma mark Reachability Methods #pragma mark - (void)checkReachability { [[NSNo

使用听云监听手游网络和崩溃的日志

经朋友介绍认识了“听云”这款产品,一直苦于监测手游的崩溃日志.我们专门搭建的日志上报系统每天会收集大概4G左右的日志,信息量很大,并且有效信息很少,还需要筛选.抱着试试看的态度,使用了一下听云. 我司游戏iOS和Android都有,所以我同时接入了两个平台的探针. 在我满怀欣喜的看到可以设置"game"类型的App并且看到数据后傻眼了.我擦,Android平台只能看到Java层访问网络的情况.如下图,两个域名都是游戏发行商的SDK在Java层做的网络访问. 游戏里C++对服务器访问的数