• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 在 iOS 设备上,en0 是否始终是 Wi-Fi?

[复制链接]
菜鸟教程小白 发表于 2022-12-13 09:53:45 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试使用 getifaddrs() 并搜索 en0 名称来获取 iOS 设备上 wifi 接口(interface)的 IP 地址。这工作正常,但它假定 en0 始终是 Wi-Fi。有什么方法可以确保我查询的接口(interface)是专门的 Wi-Fi 以备将来验证?



Best Answer-推荐答案


我使用以下方法通过查找具有 wifi 站 BSSID 的设备来查找 wifi 信息。它还将有一个 SSID。

以下类方法仅返回 wifi 信息字典。它是一个简单的扩展,还返回设备标签(ifname 变量)。正如您所指出的,它通常是 en0,但如果将来它不是 en0,这将作为确保您拿起 wifi 的一种方式。

+ (NSDictionary *)getWifiInfo {
    NSDictionary *ret=nil;

    // Get the supported interfaces.
    NSArray *ifs = (__bridge_transfer id)CNCopySupportedInterfaces();

    // Find one with a BSSID and return that. This should be the wifi.
    for (NSString *ifnam in ifs) {
        NSDictionary *info = (__bridge_transfer id)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);

        NSLog(@"Network device found = %@", info.description);

        if (info[(__bridge NSString *)kCNNetworkInfoKeyBSSID]) {
            // Return this as it should be the right one given it has a MAC address for the station
            ret=info;
        }
    }

    NSLog(@"Exit: returning wifi info = %@", ret.description);

    return ret;
}

一旦你有了基于 BSSID 的设备标签,你就可以使用 getifaddrs 来获取它的 IP、网关等,知道它是 wifi 设备。

NB这会在 iOS 模拟器中返回 nil,因为没有检测到 wifi,因此为了进行测试,您需要一些解决方法代码来满足您的需求。

一个 hacky 选项是找到与 02:00:00:00:00:00 关联的 MAC 的 IP 地址。 iOS 对编码器隐藏了 MAC 地址,它有这个值。

关于ios - 在 iOS 设备上,en0 是否始终是 Wi-Fi?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104279/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap