iPhone NetworkReachability - Tethering被认为是3G而非WIFI

时间:2017-07-26 13:47:35

标签: ios objective-c iphone wifi tethering

在我的应用中,我尝试使用 NetworkReachability 获取网络状态。当我在wifi或3g连接下时,我尝试了它,它完美无缺。

问题是当我连接到个人热点/网络共享(用iPhone测试到iPhone,Android到iPhone和带有SIM卡的路由器)我总是 3g连接而不是wifi.Tested与ios10。有没有办法不使用私有框架来控制我是否在束缚连接或热点?

2 个答案:

答案 0 :(得分:0)

您已检查互联网可访问性,使用以下链接从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"); }
}

答案 1 :(得分:0)

GitHub中,AFNetworking库提供检查网络可达性状态。使用Network Reachability Manager目标文件检测Internet可访问性状态。

共享网络可达性

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

[[AFNetworkReachabilityManager sharedManager] startMonitoring];