iOS - 获取设备的 WIFI IP 地址

时间:2021-01-12 18:59:53

标签: ios sdk

我需要获取WiFi接口的设备IP。

根据多个 StackOverflow 线程,我们可以假设“en0”对应于 Wi-Fi 接口名称: https://stackoverflow.com/a/30754194/12866797

然而,这感觉像是某种约定,而不是标准。

是否有任何一致/标准的方法来使用 iOS SDK 检索 WiFi 接口或设备 WiFi IP 地址?

如果 API 可以从 iOS 11 开始使用就好了,但我不会挑剔。

我最好的尝试是使用 NWPathMonitor (iOS 12+) 并监控与 WiFi 接口 (NWInterface.InterfaceType.wifi) 相对应的网络变化:

- (void) MonitorWifiInterface
{
    m_pathMonitor = nw_path_monitor_create_with_type(nw_interface_type_wifi);
    
    nw_path_monitor_set_update_handler(m_pathMonitor, ^(nw_path_t  _Nonnull path) {
        NSLog(@"[NetInterfaceUtilies] Network path changed");
            
        nw_path_enumerate_interfaces(path, ^ bool (nw_interface_t _Nonnull itf)
        {
            NSLog(@"[NetInterfaceUtilies] Name : %s , Index : %u", nw_interface_get_name(itf), nw_interface_get_index(itf));
            return true; // In order to continue the enumeration
        });
     });
 
     nw_path_monitor_start(m_pathMonitor); 
}

但我对它不满意,原因如下:

  1. NWPathMonitor 应该用于监控网络变化:我无法随时获取网络信息,只有在打开/关闭 WiFi 时才能获取。
  2. 我只获得了网络接口名称。但是我可以将这些数据与使用 getifaddrs() 检索到的网络接口结合起来,以推断出正确的接口和 IP:这是向前迈出的一步吗?
  3. 从 iOS 12 开始“仅”可用。

0 个答案:

没有答案