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都 ...
随机推荐
- 推荐几个不错的h5游戏引擎
http://www.phaser.io/examples http://www.cocos.com/ http://cn.cocos2d-x.org/tutorial/lists?id=30 coc ...
- 防简单攻击iptables策略
#!/bin/sh IPTABLES=/sbin/iptables # clear $IPTABLES -F # if pkg type is allow, then accept #$IPTABLE ...
- Hibernate注解方式一对多自关联关系映射
MySQL版数据库表结构 DROP TABLE IF EXISTS SYS_DICT_ITEM; CREATE TABLE SYS_DICT_ITEM( ITEM_CODE ) NOT NULL, ...
- linux源配置
阿里云源配置官网:http://mirrors.aliyun.com 1.备份 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS ...
- Oracle IF-ELSE 条件判断结构
1. IF 语法 IF 表达式 THEN ... END IF; 例如: set serverout on declare v_name varchar2(20):='&name'; begi ...
- mininet安装与简单命令总结
下载地址:http://mininet.org/ 我下载的是mininet镜像,用于导入windows Vmware中使用 用户名和密码都是mininet 下载后 导入VMware即可 建立一个简单的 ...
- 3D Face Reconstruction
方法1 Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression http: ...
- Python——greenlet
目录 1. 介绍 2. 父greenlet 3. 实例化 4. 在greenlets间切换 5. 垂死的greenlets 6. greenlet的方法和属性 7. greenlets和Python线 ...
- vegan 包进行Adonis 分析
Adonis 分析 是基于距离矩阵的多变量方差置换分析, 代码示例: 默认使用bray 距离来计算样本间的距离矩阵 参考资料: https://www.rdocumentation.org/packa ...
- C# 异常和异常处理
C# 语言的异常处理功能可帮助您处理程序运行时出现的任何意外或异常情况. 异常处理使用 try.catch 和 finally 关键字尝试某些操作,以处理失败情况,尽管这些操作有可能失败,但如果您确定 ...