我试图让我的应用程序确定用户是否有互联网连接以及他们拥有什么类型的连接。我已经导入了 SystemConnection 框架和 Reachability .h 和 .m 文件。
在我的 viewController.h 中,我有以下内容:
#import "Reachability.h"
Reachability* reachability;
并在 vc.m
//notification for network status change
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
[[NSNotificationCenter defaultCenter] postNotificationName:kReachabilityChangedNotification object:nil];
[reachability startNotifier];
//check connectivity
[self checkConnectivity];
在检查连接:
- (void) checkConnectivity {
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {
NSLog(@"no connection");
} else if (remoteHostStatus == ReachableViaWiFi) {
NSLog(@"wifi");
} else if (remoteHostStatus == ReachableViaWWAN) {
NSLog(@"cell");
}
}
这在启动时工作正常。我记录了进度,它按预期返回:
2013-07-29 09:35:17.084 OAI_Project_Template[6095:c07] not connected - network change
2013-07-29 09:35:17.093 OAI_Project_Template[6095:c07] wifi- check connectity
但是,如果我打开或关闭我的 wifi 连接,则永远不会调用 handleNetworkChange。
- (void) handleNetworkChange : (NSNotification*) notification {
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {
isConnected = NO;
NSLog(@"not connected - network change");
} else if (remoteHostStatus == ReachableViaWiFi) {
NSLog(@"wifi - network change");
} else if (remoteHostStatus == ReachableViaWWAN) {
NSLog(@"cell");
}
}
我环顾四周,看到了很多类似的问题,但解决方案似乎都是我所拥有的。
如果这很重要,我正在模拟器中工作。任何帮助,将不胜感激。