在我的应用中,我尝试使用 NetworkReachability 获取网络状态。当我在wifi或3g连接下时,我尝试了它,它完美无缺。
问题是当我连接到个人热点/网络共享(用iPhone测试到iPhone,Android到iPhone和带有SIM卡的路由器)我总是 3g连接而不是wifi.Tested与ios10。有没有办法不使用私有框架来控制我是否在束缚连接或热点?
答案 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];