iOS替代已弃用的CNCopyCurrentNetworkInfo (available - iOS 4.1-14.0)



你好,我使用cncopycurrentnetworkinfo来获取连接的数据(ssid,bssid)无线网络但根据链接https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo显示已弃用,并显示可能的解决方案是使用该方法fetchCurrentWithCompletionHandler:(https://developer.apple.com/documentation/networkextension/nehotspotnetwork/3666511-fetchcurrentwithcompletionhandle)这是HotspotHelper的方法,我也发邮件networkextension@apple.com请求HotspotHelper使用的权利(com.apple.developer. network.hotspothelper),但被拒绝了。

那么还有其他可能的解决方案吗?

https://developer.apple.com/forums/thread/675211?answerId=664741022#664741022

我从苹果开发者论坛得到了答案

+fetchCurrentWithCompletionHandler:不需要热点Helper权限。不幸的是,这一事实并没有正式记录(r. 74976266)。幸运的是,在.

的文档注释中有很多关于此方法的好信息。是实现的示例。希望这篇文章能帮助到其他人

if (@available(iOS 14.0, *)) {
[NEHotspotNetwork fetchCurrentWithCompletionHandler:^(NEHotspotNetwork * _Nullable currentNetwork) {
NSString  *strSSID = [currentNetwork SSID];
}];
} else {
NSArray *ifs = (__bridge_transfer NSArray *)CNCopySupportedInterfaces();

NSDictionary *info;

for (NSString *ifnam in ifs) {

info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);

if (info && [info count]) {

NSString  *strSSID = [info objectForKey:@"SSID"];
break;
}
}
}

似乎苹果不希望任何任意应用程序拥有这些信息,很可能是出于隐私原因。我假设你的应用不是热点助手。因此,在较新的iOS版本上无法获得这些数据。

你可以加上你需要此信息的原因。如果是为了收集有关用户的信息,那么你就有了答案。如果不是,那么你可以用另一种方式实现你的实际目标。

相关内容

  • 没有找到相关文章

最新更新