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

自动检测iOS网络并可跳转至设置界面设置网络

2014-03-12 21:25 309 查看
若不想写繁琐的网络状况判断代码,并且应用程序能自动在无网络时弹出可跳转到系统设置页面的对话框,那么可以考虑这么做。
在项目中相应的**info.plist文件中增加一个关键字:
<key>SBUsesNetwork</key>
<true/>

应用程序就会自动检测网络状况,在网络异常的情况下,会弹出网络设置对话框提醒用户是否进行网络设置,并且可以跳转至系统设置中进行昂立设置。

其实在IOS5.1+之后,苹果就删除了程序跳转至设置界面的功能了,不知道为什么。。。

所以自己写代码也是不可能实现的,只能够对网络进行监听,然后提醒用户网络链接异常而已。
下面是监听网络改变的代码,可以参考一下:
[b]1.声明变量及方法
[/b]
@interface AppDelegate()
{
@private
Reachability *hostReach;
}
- (void) reachabilityChanged: (NSNotification* )note;//网络连接改变
- (void) updateInterfaceWithReachability: (Reachability*) curReach;//处理连接改变后的情况
@end

2.在入口函数中开始网络监听
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
// Override point for customization after application launch.

//开启网络状况的监听
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name: kReachabilityChangedNotification object: nil];

hostReach = [[Reachability reachabilityWithHostName:@"www.apple.com"] retain];//可以以多种形式初始化
[hostReach startNotifier];  //开始监听,会启动一个run loop

[self updateInterfaceWithReachability: hostReach];
//.....

self.window.backgroundColor = [UIColor whiteColor];
[self.window makeKeyAndVisible];
return YES;
}

3.实现2个方法
//监听到网络状态改变
- (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 == kReachableViaWWAN)
{
printf("\n3g/2G\n");
}
else if(status == kReachableViaWiFi)
{
printf("\nwifi\n");
}else
{
printf("\n无网络\n");
}

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