若不想写繁琐的网络状况判断代码,并且应用程序能自动在无网络时弹出可跳转到系统设置页面的对话框,那么可以考虑这么做。
在项目中相应的**info.plist文件中增加一个关键字:
<key>SBUsesNetwork</key>
<true/>
在项目中相应的**info.plist文件中增加一个关键字:
<key>SBUsesNetwork</key>
<true/>
应用程序就会自动检测网络状况,在网络异常的情况下,会弹出网络设置对话框提醒用户是否进行网络设置,并且可以跳转至系统设置中进行昂立设置。
其实在IOS5.1+之后,苹果就删除了程序跳转至设置界面的功能了,不知道为什么。。。
所以自己写代码也是不可能实现的,只能够对网络进行监听,然后提醒用户网络链接异常而已。
下面是监听网络改变的代码,可以参考一下:
1.声明变量及方法
2.在入口函数中开始网络监听@interface AppDelegate() { @private Reachability *hostReach; } - (void) reachabilityChanged: (NSNotification* )note;//网络连接改变 - (void) updateInterfaceWithReachability: (Reachability*) curReach;//处理连接改变后的情况 @end
- (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"); } }