如何在 iOS 13 上获取给定网络接口的当前网络信息
Posted
技术标签:
【中文标题】如何在 iOS 13 上获取给定网络接口的当前网络信息【英文标题】:How to get current network information for a given network interface on iOS 13 【发布时间】:2019-09-24 03:48:20 【问题描述】:我正在尝试实现一个应用,该应用使用用户当前在 ios 13 上连接的网络的 BSSID。
但是,Apple 的 documentation for CNCopyCurrentNetworkInfo on iOS 13 对其 API 的使用要求并不明确。
它在描述中陈述了以下内容:
请求应用必须满足以下要求之一:
应用使用Core Location,并拥有用户使用位置信息的授权。
应用使用 NEHotspotConfiguration API 来配置当前的 Wi-Fi 网络。
该应用已安装有效的 *** 配置。
这似乎表明只需要满足上面列出的 3 个要求中的 一个。
然而,它随后指出:
未能满足上述任何要求的应用会收到以下返回值:
与 iOS 12 或更早版本关联的应用会收到包含伪值的字典。本例中SSID为Wi-Fi(或中国地区的WLAN),BSSID为00:00:00:00:00:00。
链接到 iOS 13 或更高版本的应用收到 NULL。
这表明该应用需要满足上述所有要求
这使得要求是什么变得非常混乱,因为前一部分声称您只需要实现这三个中的一个即可获得 BSSID,而后一部分则表明如果您错过了三个要求中的任何一个。
对此的任何帮助将不胜感激!
【问题讨论】:
对我来说,您需要“核心位置”权限并设置“访问 WiFi 信息”功能。 我拥有位置权限和 WiFi 功能,但仍然没有检索到 SSID。您是否设法在 iOS 13.0 版本中检索到 SSID? @BennyDavidovitz 老实说,我们只需要满足至少一个条件即可工作,这在阅读主题演讲时得到了证实。我尝试更新到 iOS 13.1 测试版并且它再次运行,所以 iOS 13.0 出了什么问题有点神秘 @Shinlos 尝试在 iOS 13 版本上运行。我知道测试版很好。您可以在此讨论 (github.com/HackingGate/iOS13-WiFi-Info/issues/7) 中看到我不是那个疯子。 更新:重启 iOS 设备解决了它(不仅仅是我) 【参考方案1】:您的第二个引用确实说“任何”,所以不确定您为什么认为它建议“全部”。
你在 13.3 (17C54) 上试过了吗?
我在使用一些应用时遇到了一些问题。我开始怀疑它是“始终启用位置”还是“仅在使用应用程序时启用”。
【讨论】:
【参考方案2】:您似乎并不孤单。
根据下面的 github 线程,即使在最新版本的 iOS (13.2.2) 上,SSID 检索似乎也存在问题。
在下面的链接中,您会发现 Apple 很可能已在 iOS 13.3 上修复了此问题,该版本现在处于测试阶段。我建议我们都测试一下,看看结果如何。
https://github.com/HackingGate/iOS13-WiFi-Info/issues/7
【讨论】:
以上是关于如何在 iOS 13 上获取给定网络接口的当前网络信息的主要内容,如果未能解决你的问题,请参考以下文章