iPhone NetworkReachability - 网络共享被认为是3G而不是WIFI



在我的应用程序中,我正在尝试使用NetworkReachability获取网络状态。当我在 wifi 或 3g 连接下时,我尝试过它,它工作得很好。

问题是当我连接到个人热点/网络共享(使用 iPhone 到 iPhone、Android 到 iPhone 和带有 SIM 卡的路由器进行测试(时,我总是得到3G 连接而不是 wifi。使用 ios10 进行测试。有什么方法不使用私有框架来控制我是否处于网络共享连接或热点状态?

您已检查互联网的可达性,使用以下链接从Apple下载可达性演示项目:

https://developer.apple.com/library/content/samplecode/Reachability/Introduction/Intro.html

,然后将 .h 和 .m 文件添加到项目中。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(handleNetworkChange:) name:kReachabilityChangedNotification object:nil];
reachability = [Reachability reachabilityForInternetConnection];
[reachability startNotifier];
- (void) handleNetworkChange:(NSNotification *)notice
{
NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus];
if(remoteHostStatus == NotReachable) {NSLog(@"no");}
else if (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); }
else if (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); }
}

在GitHub中,AFNetworking库提供了检查网络可达性状态的功能。使用网络可访问性管理器对象文件检测 Internet 可访问性状态的状态。

共享网络可达性

[[AFNetworkReachabilityManager sharedManager] setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus status) {
NSLog(@"Reachability: %@", AFStringFromNetworkReachabilityStatus(status));
}];
[[AFNetworkReachabilityManager sharedManager] startMonitoring];

最新更新