NEHotspotConfigurationManager相关咨询:能否获取WiFi列表及API调用异常
NEHotspotConfigurationManager相关问题解答
嘿,针对你提出的三个问题,我结合iOS官方文档和实际开发经验给你梳理清楚:
1. NEHotspotConfigurationManager能否获取WiFi列表?
可以,但它的能力有严格限制——只能获取当前设备通过NEHotspotConfigurationManager API配置并成功连接过的WiFi SSID列表,完全没办法扫描附近未连接的WiFi信号。
2. 调用getConfiguredSSIDsWithCompletionHandler:返回null的原因
先看你的代码:
[[NEHotspotConfigurationManager sharedManager] getConfiguredSSIDsWithCompletionHandler: ^ (NSArray * array) { NSLog (@ "Response:% @", array); }];
返回空数组(你看到的null其实是空数组的日志输出)通常有这几个常见原因:
- 从未用该API配置过WiFi:如果你的设备从来没通过
NEHotspotConfigurationManager的applyConfiguration:方法配置并成功连接过任何WiFi,这个方法自然返回空。 - 权限未配置:必须在项目的
Info.plist中添加Hotspot Configuration权限(对应的键是com.apple.developer.networking.HotspotConfiguration,类型设为Boolean,值为YES),否则API会静默返回空。 - iOS版本不兼容:
getConfiguredSSIDsWithCompletionHandler:是iOS 13才引入的API,如果你在iOS 12或更低版本调用,会直接返回空或者触发兼容性问题。 - 所有配置已被移除:如果之前调用过
removeConfigurationForSSID:移除了所有通过该API配置的WiFi,也会返回空数组。
3. 是否可无需通过NEHotspotHelper,使用NEHotspotConfigurationManager获取附近WiFi?
完全不行。NEHotspotConfigurationManager的核心定位是管理已配置的WiFi连接,没有扫描附近WiFi的功能。
要获取附近的WiFi列表,唯一的官方途径是使用NEHotspotHelper,但这个API有很高的门槛:你需要向苹果开发者支持申请com.apple.developer.networking.HotspotHelper的特殊权限,普通开发者默认无法获取。这是iOS系统为了隐私和安全设置的限制,没有这个权限的话,任何App都无法扫描附近的WiFi信号。
内容的提问来源于stack exchange,提问作者Chris.Chen




