ios利用Reachability确认网络环境3G/WIFI(转)
iPhone开发技巧之网络篇(4)--- 确认网络环境
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审查的。
Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中。如下图:
然后将 SystemConfiguration.framework 添加进工程:

Reachability 中定义了3种网络状态。
// the network state of the device for Reachability 1.5.
typedef enum{
NotReachable= 0,
ReachableViaCarrierDataNetwork,
ReachableViaWiFiNetwork
} NetworkStatus;
// the network state of the device for Reachability 2.0.
typedefenum{
NotReachable= 0,
ReachableViaWiFi,
ReachableViaWWAN
} NetworkStatus;
NotReachable
//无连接
ReachableViaCarrierDataNetwork (ReachableViaWWAN)
//使用3G/GPRS网络
ReachableViaWiFiNetwork (ReachableViaWiFi)
//使用WiFi网络
//比如检测某一特定站点的接续状况,可以使用下面的代码:
Reachability*r= [ReachabilityreachabilityWithHostName:@“www.apple.com”];
switch([r currentReachabilityStatus])
{ caseNotReachable:
// 没有网络连接
break;
caseReachableViaWWAN:
// 使用3G网络break; caseReachableViaWiFi: // 使用WiFi网络break;}
//检测当前网络环境
//程序启动时,如果想检测可用的网络环境,可以像这样。
// 是否wifi
+ (BOOL) IsEnableWIFI{
return([[ReachabilityreachabilityForLocalWiFi] currentReachabilityStatus] != NotReachable);
}
// 是否3G
+ (BOOL) IsEnable3G{
return([[ReachabilityreachabilityForInternetConnection] currentReachabilityStatus] != NotReachable);
}
//连接状态实时通知
//网络连接状态的实时检查,通知在网络应用中也是十分必要的。接续状态发生变化时,需要及时地通知用户//。由于Reachability1.5版与2.0版有一些变化,这里分开来说明使用方法。
Reachability 1.5 My.AppDelegate.h
#import"Reachability.h"
@interfaceMyAppDelegate: NSObject<UIApplicationDelegate> {
NetworkStatusremoteHostStatus;
}
@property NetworkStatusremoteHostStatus;
@end
// My.AppDelegate.m
#import"MyAppDelegate.h"
@implementationMyAppDelegate
@synthesizeremoteHostStatus;
// 更新网络状态
- (void)updateStatus{
self.remoteHostStatus = [[ReachabilitysharedReachability] remoteHostStatus];
}
// 通知网络状态
- (void)reachabilityChanged:(NSNotification*)note{
[selfupdateStatus];
if(self.remoteHostStatus == NotReachable)
{
UIAlertView*alert= [[UIAlertViewalloc] initWithTitle:NSLocalizedString(@"AppName", nil) message:NSLocalizedString(@"NotReachable", nil) delegate:nilcancelButtonTitle:@"OK"otherButtonTitles: nil];
[alert show];
[alert release];
}
}
// 程序启动器,启动网络监视
- (void)applicationDidFinishLaunching:(UIApplication*)application{
// 设置网络检测的站点
[[ReachabilitysharedReachability] setHostName:@"www.apple.com"];
[[ReachabilitysharedReachability] setNetworkStatusNotificationsEnabled:YES];
// 设置网络状态变化时的通知函数[[NSNotificationCenterdefaultCenter] addObserver:selfselector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification"object:nil]; [selfupdateStatus];}
- (void)dealloc{
// 删除通知对象
[[NSNotificationCenterdefaultCenter] removeObserver:self];
[window release];
[superdealloc];
} Reachability 2.0 / MyAppDelegate.h
@classReachability;
@interfaceMyAppDelegate: NSObject<UIApplicationDelegate>
{ Reachability*hostReach;}
@end // MyAppDelegate.m
- (void)reachabilityChanged:(NSNotification*)note{
Reachability* curReach= [note object];
NSParameterAssert([curReach isKindOfClass: [Reachabilityclass]]);
NetworkStatusstatus= [curReach currentReachabilityStatus];
if(status == NotReachable) {
UIAlertView*alert= [[UIAlertViewalloc] initWithTitle:@"AppName""
message:@"NotReachable"delegate:nil
cancelButtonTitle:@"YES"otherButtonTitles:nil];
[alert show];
[alert release];
}}
- (void)applicationDidFinishLaunching:(UIApplication *)application {
// ...
// 监测网络情况
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];
hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain];
[hostReach startNotifer];
// ...}
ios利用Reachability确认网络环境3G/WIFI(转)的更多相关文章
- iOS开发 利用Reachability判断网络环境
导入头文件:#import "Reachability.h" 然后将 SystemConfiguration.framework 添加进工程: 1.检查当前的网络状态(wifi.W ...
- UWP开发:获取用户当前所在的网络环境(WiFi、移动网络、LAN…)
原文:UWP开发:获取用户当前所在的网络环境(WiFi.移动网络.LAN-) UWP开发:获取用户当前所在的网络环境: 在uwp开发中,有时候,我们需要判断用户所在的网络,是WiFi,还是移动网络,给 ...
- iOS模拟(糟糕的)网络环境
有时候为了模拟在糟糕的网络环境下app的表现,会故意拔网线(断wifi),苹果其实提供了专门的工具来精确地模拟你在几个预设的场景下的网络连接情况:Network Link Conditioner 点击 ...
- iOS:Reachability网络监听
iOS利用Reachability确认网络环境3G/WIFI 开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息.如果没有处理它们,是不会通过Apple的审查的,一般情况下,可以把网络监 ...
- IOS判断网络环境
https://developer.apple.com/library/ios/#samplecode/Reachability/Introduction/Intro.html 我下载的是vertio ...
- iOS开发-Reachability实时检测Wifi,2G/3G/4G/网络状态
最近遇到一个功能就是根据用户当前的网络状,用户未联网需要提示一下,如果是Wifi可以推荐一些图片新闻,如果是3G模式设置为无图的模式,获取网络状态比较简单,毕竟中国现在的流量还是一个比较贵的状态,哪天 ...
- iOS中使用 Reachability 检测网络区分手机网络类型 WiFi 和2 3 4 G
如果你想在iOS程序中提供一仅在wifi网络下使用(Reeder),或者在没有网络状态下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Re ...
- iOS开发网络篇—Reachability检测网络状态
前言:当应用程序需要访问网络的时候,它首先应该检查设备的网络状态,确认设备的网络环境及连接情况,并针对这些情况提醒用户做出相应的处理.最好能监听设备的网络状态的改变,当设备网络状态连接.断开时,程序也 ...
- iOS中使用 Reachability 检测网络
iOS中使用 Reachability 检测网络 内容提示:下提供离线模式(Evernote).那么你会使用到Reachability来实现网络检测. 写本文的目的 了解Reachability都 ...
随机推荐
- WPF中查找控件的扩展类
在wpf中查找控件要用到VisualTreeHelper类,但这个类并没有按照名字查找控件的方法,于是搜索网络,整理出下面这个类,感觉用起来很是方便. 贴出来,供大家参考. /// <summa ...
- log_bin_trust_function_creators
log_bin_trust_function_creators错误解决 当有mysql本地或远程建立function或procedure时报上面的错误 或者如果开启了二进制日志,但是用户没有suppe ...
- 使用STC-ISP向KEIL添加STC芯片头文件
第一步:打开“STC-ISP”软件. 第二步:点击右手边“Keil仿真设置”,然后点击“添加型号和头文件到Keil中添加STC仿真器驱动到Keil中”. 第三步:在弹出的“浏览文件夹”对话框中,找到你 ...
- matlab知识点汇集
1.设置图线宽度 set( haxis, 'LineWidth', 1.0 ); ----这是 set函数, 'LineWidth'就是axis的线宽度属性,其值默认为0.5,这里可以改成1.0了 ...
- ES6之函数参数
ES6中对于函数参数主要增加了以下内容: 1.参数的扩展/数组的展开: 2.默认参数. 什么是参数的扩展? 看下面代码: <!DOCTYPE html> <html lang=&qu ...
- oozie 入门
转自:http://blackproof.iteye.com/blog/1928122 oozie概述:oozie能干什么 oozie格式:怎么用oozie oozie执行:怎么运行oozie ooz ...
- 【转】IntelliJ IDEA 创建 hello world Java web Maven项目
学Java的大部分吧都是要整Java web开发项目的,那么最好用的编辑器估计就是这个 IntelliJ IDEA,然后现在maven管理项目是很流行的.然后我就示范一下,如何使用这个IntelliJ ...
- [转]8款实用的jQuery/CSS3最新插件应用
今天给大家分享8款非常酷的最新jQuery/CSS3应用插件,废话少说,下面一起来看看这些插件吧. 1.HTML5重力感应积木游戏 这也是一款基于HTML5技术的重力感应游戏,一些积木从天而降,你可以 ...
- 第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表、课程评论表、用户收藏表、用户消息表、用户学习表
第三百七十六节,Django+Xadmin打造上线标准的在线教育平台—创建用户操作app,在models.py文件生成5张表,用户咨询表.课程评论表.用户收藏表.用户消息表.用户学习表 创建名称为ap ...
- nginx+Uwsgi+Django总结与分析
配置与调试nginx与uwsgi 參考: 1.uWSGI其三:uWSGI搭配Nginx使用 2.学习VirtualEnv和Nginx+uwsgi用于django项目部署 3.部署备忘 4.nginx+ ...