iOS开发实践之网络检测Reachability
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS开发实践之网络检测Reachability,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3110字,纯文字阅读大概需要5分钟。
内容图文
在网络应用开发中,有时需要对用户设备的网络状态进行实时监控,以至于对用户进行友好提示 或者根据不同网络状态处理不一样的逻辑(如视频播放app,根据当前的网络情况自动切换视频清晰度等等)。用Reachability实现网络的检测。
苹果官方提供了Reachability的示例程序,便于开发者检测网络状态
https://developer.apple.com/library/ios/samplecode/Reachability/Reachability.zip
1、 网络状态枚举NetworkStatus:
NotReachable = 0, //没有网络
ReachableViaWiFi, //Wi-Fi 网络
ReachableViaWWAN // 移动网络(非 Wi-Fi )
2、Reachability常用方法:
/*! * 通过host实例化Reachability */ + (instancetype)reachabilityWithHostName:(NSString *)hostName; /*! * 通过ip地址实例化Reachability */ + (instancetype)reachabilityWithAddress:(const struct sockaddr_in *)hostAddress; /*! * 获取网络连接对象 */ + (instancetype)reachabilityForInternetConnection; /*! * 获取Wi-Fi链接对象 */ + (instancetype)reachabilityForLocalWiFi; /*! * 监听网络变化方法 */ - (BOOL)startNotifier; //开始监听 - (void)stopNotifier; //停止监听 //当前网络连接状态 - (NetworkStatus)currentReachabilityStatus;
3、监听网络变化:kReachabilityChangedNotification
3.1、注册网络状态通知
[[ NSNotificationCenter defaultCenter ] addObserver : self selector : @selector (netWorkStatusChange) name : kReachabilityChangedNotification object : nil ];
3.2、 获取 Reachability 对象
self . reachability = [ Reachability reachabilityForInternetConnection ];
3.3、开始监听网络变化
[ self . reachability startNotifier ];
3.4、关闭通知并释放对象
-( void )dealloc{
[ self . reachability stopNotifier ];
[[ NSNotificationCenter defaultCenter ] removeObserver : self ];
}
4、 Reachability 的使用步骤
4.1、 添加框架 SystemConfiguration.framework(xocde5之后自动添加)
4.2、引入 源代码
4.3、导入头文件
#import "Reachability.h"
4.4、如果Reachability运行报arc错误。则源码设置arc编译环境(目前最新下载Reachability是arc模式)。
如果你的项目使用的非 ARC 模式,则为 ARC 模式的代码文件加入 -fobjc-arc 标签。
如果你的项目使用的是 ARC 模式,则为非 ARC 模式的代码文件加入 -fno-objc-arc 标签。
5、栗子:
NetWorkTool.m
#import "NetWorkTool.h" #import "Reachability.h" @implementation NetWorkTool //检查是否Wi-Fi网络 +(BOOL)isEnableWIFI{ return [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable; } //检查是否移动网络 +(BOOL)isEnableWWAN{ //return [[Reachability reachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable; return [[Reachability reachabilityForInternetConnection] currentReachabilityStatus] == ReachableViaWWAN; } @end
ViewController.m
#import "ViewController.h" #import "Reachability.h" #import "NetWorkTool.h" @interface ViewController () @property(nonatomic,strong) Reachability *reachability; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; //注册网络状态通知 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(netWorkStatusChange) name:kReachabilityChangedNotification object:nil]; //获取Reachability对象 self.reachability = [Reachability reachabilityForInternetConnection]; //开始监听网络变化 [self.reachability startNotifier]; } //关闭通知并释放对象 -(void)dealloc{ [self.reachability stopNotifier]; [[NSNotificationCenter defaultCenter] removeObserver:self]; } //网络变化 -(void)netWorkStatusChange{ NSLog(@"当前网络发生改变"); [self checkCurNetWork]; } //检测网络 -(void) checkCurNetWork{ if ([NetWorkTool isEnableWIFI]) { NSLog(@"当前网络为Wi-Fi网络"); }else if ([NetWorkTool isEnableWWAN]){ NSLog(@"当前网络为移动网络"); }else{ NSLog(@"没网络连接"); } }
原文:http://blog.csdn.net/zhixinhuacom/article/details/50616085
内容总结
以上是互联网集市为您收集整理的iOS开发实践之网络检测Reachability全部内容,希望文章能够帮你解决iOS开发实践之网络检测Reachability所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。