我正在寻找一种方法来获取我的项目中当前连接的 WiFi 网络的 MAC 地址和 SSID。我已经使用Tony Million 的 Reachability来决定用户何时在 WiFi 网络上,并且正在测试Kenial 的 NICInfo 却发现它只提供 iPhone 的 WiFi MAC 地址。尽管这两个项目都以自己的方式提供了很大帮助,但它们并没有完成工作。我想知道是否有一个公共 API(对于某些 Apple App Approval)或一些后门来实现这一点。
1 回答
这涉及一些不同的事情:
获取 SSID - 这与 MAC 地址问题无关。为此,请检查此 SO 答案:iPhone get SSID without private library。我不知道从其他答案重新发布代码的礼仪是什么,所以我只是链接。
获取 MAC 地址 - 因为大多数网络在第 3 层运行(谁会猜到,它被称为网络层 - http://en.wikipedia.org/wiki/OSI_model)并且 MAC 地址在第 2 层(数据链路层)您首先需要获取 WiFi 接口网关的 IP 地址。只是一个旁注 - 问题应该被表述为“我如何获取当前连接的 WiFi 网络的 SSID 和 WiFi 路由器/网关的 MAC 地址”。任何人,要获取网关地址,请参阅这个 SO 答案:如何在 iPhone 上获取 WIFI 网关地址?
完成后,您需要使用 ARP(地址解析协议,所有网络将 IP 地址转换为 MAC 地址的协议)将其转换为 MAC 地址。网络接口不通过 IP 进行通信,它们通过 MAC 进行通信,所以这种情况实际上无处不在,无时无刻不在发生。在 PC/Mac 上访问 ARP 表实际上非常容易。对于 iOS,我找到了将 IP 地址转换为 MAC 地址的 SO 答案:Getting ARP table on iPhone/iPad