微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

已弃用的 CNCopyCurrentNetworkInfo 的 iOS 替换可用性 - iOS 4.1–14.0

如何解决已弃用的 CNCopyCurrentNetworkInfo 的 iOS 替换可用性 - 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.networking.HotspotHelper) 但被拒绝。

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

解决方法

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

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

+fetchCurrentWithCompletionHandler:不需要 Hotspot 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;
        }
    }
}
,

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

您可以添加需要此信息的原因。如果是收集有关用户的信息,那么您就有了答案。如果没有,那么您可能会以不同的方式实现您的实际目标。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。