您的位置:首页 > 理论基础 > 计算机网络

IOS使用Reachability实时检测网络连接状况

2014-06-30 17:01 351 查看
开发Web等网络应用程序的时候,需要确认网络环境,连接情况等信息。如果没有处理它们,是不会通过Apple的审查的。

Apple 的 例程 Reachability 中介绍了取得/检测网络状态的方法。在你的程序中使用 Reachability 只须将该例程中的 Reachability.h 和 Reachability.m 拷贝到你的工程中,然后将 SystemConfiguration.framework 添加进工程

Reachability 中定义了3种网络状态。

typedefenum : NSInteger {
NotReachable =0,//无网络链接
ReachableViaWiFi,//无线网络链接
ReachableViaWWAN,//3G/GPRS网络链接
} NetworkStatus;

程序示例:

//在程序的启动处,开启通知

- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

{

//.....

//开启网络状况的监听

[[NSNotificationCenter defaultCenter] addObserver:self

selector:@selector(reachabilityChanged:)

name: kReachabilityChangedNotification

object: nil];

hostReach = [[Reachability reachabilityWithHostName:@"www.google.com"] retain];//可以以多种形式初始化

[hostReach startNotifier];
//开始监听,会启动一个run loop

[self updateInterfaceWithReachability: hostReach];

//.....

}

// 连接改变

- (void) reachabilityChanged: (NSNotification*
)note

{

Reachability* curReach = [note object];

NSParameterAssert([curReach isKindOfClass:
[Reachability class]]);

[self updateInterfaceWithReachability:
curReach];

}

//处理连接改变后的情况

- (void) updateInterfaceWithReachability: (Reachability*)
curReach

{

//对连接改变做出响应的处理动作。

NetworkStatus status
= [curReach currentReachabilityStatus];

if (status == NotReachable)
{ //没有连接到网络就弹出提实况

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"My
App Name"

message:@"NotReachable"

delegate:nil

cancelButtonTitle:@"YES" otherButtonTitles:nil];

[alert show];

[alert release];

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: