iOS检测联网
2015-11-20 20:20
423 查看
在ios移动开发过程中,只要不是单机的移动的开发,基本都有链接网络的操作。这次主要讲的是用Reachability来判断iphone是否处于联网状态中。
首先,苹果官网提供了Reachability的接口。
https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html
在这里,可以下载Reachability.m和Reachability.h,然后将这两个文件导入到自己的项目里面。
官网给出的主要是三种状态:
网络不可用:NoteReachable
使用的是本地运营商网络:ReachableViaWiFi
使用的Wi-Fi网络:ReachableViaWWAN
接口代码如下:
然后,就需要在自己的代码里面调用相应的接口。
在官网给定的接口中,可以判断出来是WI-FI连接还是本地运营商链接。代码如下:
如果仅仅是判断iphone是否处于联网状态中,那就需要改动一下Reachability.m和Reachability.h这两个文件,在里面添加一些判定的代码。
Reachability.h
Reachability.m
在需要检测网络连接的相应View Controller中加入如下代码:
最后运行出来的效果图:
首先,苹果官网提供了Reachability的接口。
https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html
在这里,可以下载Reachability.m和Reachability.h,然后将这两个文件导入到自己的项目里面。
官网给出的主要是三种状态:
网络不可用:NoteReachable
使用的是本地运营商网络:ReachableViaWiFi
使用的Wi-Fi网络:ReachableViaWWAN
接口代码如下:
typedef enum : NSInteger { NotReachable = 0, ReachableViaWiFi, ReachableViaWWAN } NetworkStatus;
然后,就需要在自己的代码里面调用相应的接口。
在官网给定的接口中,可以判断出来是WI-FI连接还是本地运营商链接。代码如下:
- (void)testConnection { BOOL result = YES; Reachability *reach=[Reachability sharedReachability]; [reach setHostName:@“www.baidu.com”]; NetworkStatus status; status=[reach remoteHostStatus]; //本地运营商 { [AlertView showNotice:@"使用本地网络"]; } //WI-FI连接 else if (status == ReachableViaWiFiNetwork) { [AlertView showNotice:@"使用WIFI网络"]; } }
如果仅仅是判断iphone是否处于联网状态中,那就需要改动一下Reachability.m和Reachability.h这两个文件,在里面添加一些判定的代码。
Reachability.h
typedef void (^NetworkReachable)(Reachability * reachability); typedef void (^NetworkUnreachable)(Reachability * reachability); @interface Reachability : NSObject @property (nonatomic, copy) NetworkReachable reachableBlock; @property (nonatomic, copy) NetworkUnreachable unreachableBlock;
Reachability.m
#if NEEDS_DISPATCH_RETAIN_RELEASE @property (nonatomic, assign) dispatch_queue_t reachabilitySerialQueue; #else @property (nonatomic, strong) dispatch_queue_t reachabilitySerialQueue; #endif
在需要检测网络连接的相应View Controller中加入如下代码:
Reachability *reach = [Reachability reachabilityWithHostname:@"www.baidu.com"]; reach.reachableBlock = ^(Reachability *reach) { dispatch_async(dispatch_get_main_queue(), ^{ [reach stopNotifier]; //提示网络可达 [AlertView showNotice:@"网络正常"]; }); }; reach.unreachableBlock = ^(Reachability*reach) { dispatch_async(dispatch_get_main_queue(), ^{ [reach stopNotifier]; //提示网络不可达 [AlertView showNotice:@"您处于离线模式(网络缺失)"]; }); }; // start the notifier which will cause the reachability object to retain itself! [reach startNotifier];
最后运行出来的效果图:
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 讲解iOS开发中基本的定位功能实现
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 浅析iOS应用开发中线程间的通信与线程安全问题
- 检测iOS设备是否越狱的方法
- .net平台推送ios消息的实现方法
- 探讨Android与iOS,我们将何去何从?
- Android、iOS和Windows Phone中的推送技术详解
- IOS 改变键盘颜色代码
- 举例详解iOS开发过程中的沙盒机制与文件
- Android和IOS的浏览器中检测是否安装某个客户端的方法
- 分享一个iOS下实现基本绘画板功能的简单方法
- javascript实现阻止iOS APP中的链接打开Safari浏览器