首页 > 学院 > 开发设计 > 正文

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

2019-11-14 17:58:25
字体:
来源:转载
供稿:网友

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


  • 系统的方法是通过通知机制来实现网络状态的监听
  • 实现网络状态监听的步骤

    • 定义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];

       

 
 

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表