0

您好,我正在使用 cncopycurrentnetworkinfo 获取连接的 wifi 网络的数据(ssid,bssid),但根据链接https://developer.apple.com/documentation/systemconfiguration/1614126-cncopycurrentnetworkinfo显示已弃用并显示可能的解决方案正在使用方法 fetchCurrentWithCompletionHandler:( https://developer.apple.com/documentation/networkextension/nehotspotnetwork/3666511-fetchcurrentwithcompletionhandle ) 这是 HotspotHelper 的方法,我也通过电子邮件 networkextension@apple.com 请求该权利 (com.apple.developer.networking .HotspotHelper) 被 HotspotHelper 使用但被拒绝。

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

4

2 回答 2

2

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

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

+fetchCurrentWithCompletionHandler:不需要热点助手权利。不幸的是,这一事实并未正式记录(r. 74976266)。幸运的是,在 <NetworkExtension/NEHotspotNetwork.h> 的文档注释中有很多关于此方法的有用信息。

这是实现的示例。希望这对其他人有帮助

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;
        }
    }
}
于 2021-03-03T12:09:31.983 回答
0

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

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

于 2021-03-01T14:21:30.303 回答