如何在 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 上获取给定网络接口的当前网络信息的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Linux/UNIX 上当前的网络接口吞吐量统计信息? [关闭]

识别活动网络接口

Qt - 网络接口统计

如何获取当前使用的网络适配器

sh macOS:获取当前活动的网络设备名称,接口,mac

Windows 10 如何设置网络属性为私有