我正在研究iOS应用程序,我需要检测网络何时从Wifi连接到另一个Wifi连接或Wifi和3G之间的变化。
我尝试过使用Reachability库,但它似乎没有检测到Wifi连接之间的变化。 我可以使用什么?
应用程序的目标是App Store,因此我不能使用Apple的私有方法。
更新:经过一些测试后,我发现使用模拟器进行测试时效果很好。我收到通知没有任何问题。 可能是iphone问题?
提前致谢
答案 0 :(得分:1)
请参阅此链接https://stackoverflow.com/a/19256197/1382157
其他方式,
- (BOOL)isReachable {
return [self isReachableViaWWAN] || [self isReachableViaWiFi];
}
- (BOOL)isReachableViaWWAN {// If this return true, means it is connected to 3g
return self.networkReachabilityStatus ==
AFNetworkReachabilityStatusReachableViaWWAN;
}
- (BOOL)isReachableViaWiFi { // If this return true, means it is connected to wifi
return self.networkReachabilityStatus ==
AFNetworkReachabilityStatusReachableViaWiFi;
}
确保正确初始化课程并执行
[self.manager.reachabilityManager startMonitoring];
答案 1 :(得分:0)
请先查看Reachibility
导入课程后 写在.h
Reachability* reachability;
.m class
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
.....
- (void) handleNetworkChange:(NSNotification *)notice
{
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable)
{
NSLog(@"no");
}
else if (remoteHostStatus == ReachableViaWiFiNetwork)
{
NSLog(@"wifi");
}
else if (remoteHostStatus == ReachableViaCarrierDataNetwork)
{
NSLog(@"cell");
}
}