【问题标题】:How to detect wifi network change in iOS如何在 iOS 中检测 wifi 网络变化
【发布时间】:2017-08-30 11:52:18
【问题描述】:

我正在开发 iOS 应用程序,我需要检测网络何时从 Wifi 连接到另一个 Wifi 连接或在 Wifi 和 3G 之间发生变化。

我曾尝试使用可达性库,但它似乎没有检测到 Wifi 连接之间的变化。 我可以使用什么?

应用程序的目标是 App Store,所以我不能使用 Apple 的私有方法。

更新:经过一些测试,我发现使用模拟器进行测试时效果很好。我收到通知没有任何问题。 iphone有问题吧?

提前致谢

【问题讨论】:

标签: ios objective-c iphone networking wifi


【解决方案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]; 

【讨论】:

  • 是的,我试过了,确保我正在调用 startMonitoring 但到目前为止没有运气
  • 然后发布你的代码,让每个人都可以看到并弄清楚发生了什么错误。
【解决方案2】:

请先看Reachibility

导入类后 写在.h

 Reachability* reachability;

.m 类

 [[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"); 
} 
} 

【讨论】:

  • 是的,我试过了,检查了那个例子,我已经实现了类似的东西,但它仍然无法正常工作
  • 这对我有用,我不知道你面临什么问题。
  • 在不同wifi网络之间切换时没有收到通知
猜你喜欢
  • 1970-01-01
  • 2011-03-23
  • 2021-08-03
  • 2011-09-07
  • 1970-01-01
  • 2015-05-31
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
相关资源
最近更新 更多