Flutter 3.0.1如何获取WiFi下所有已连接设备列表?

Flutter 3.0.1 同WiFi连接设备信息获取方案
不存在可直接全平台生效、一键获取同WiFi下所有已连接设备真实MAC地址与设备名称的现成维护中插件,你之前测试的mdns 0.0.1、Wifi Plugin Info、Network Plugin info等依赖失效,核心原因是近两年Android、iOS系统权限持续收紧,且上述插件大多长期未更新适配新系统规则。要实现对应功能需要分平台处理,同时明确系统本身的能力限制:
- Android端实现说明
- 从Android 10开始,普通第三方应用无法获取其他联网设备的真实MAC地址,系统会返回随机生成的虚拟MAC值,仅系统签名应用、拥有root权限的设备可读取真实MAC,该限制为系统层面强制拦截,无通用绕过方案
- 可实现的基础能力:
- 按需申请对应权限:Android 12及以下申请
ACCESS_FINE_LOCATION、ACCESS_WIFI_STATE权限,Android 13及以上额外申请NEARBY_WIFI_DEVICES权限 - 通过MethodChannel桥接原生逻辑,读取系统
/proc/net/arp路径下的ARP表文件,解析得到同网段所有在线设备的IP、对应MAC字段(Android 10+该字段为虚拟MAC) - 设备名称可搭配官方维护的
multicast_dns包做局域网多播扫描,识别开启了mDNS服务的设备名称;未开启mDNS的设备可额外补充SSDP、NetBIOS广播探测匹配名称
- 按需申请对应权限:Android 12及以下申请
- iOS端实现说明
- iOS系统沙箱直接禁止普通应用读取当前WiFi下的连接设备列表,也未开放获取其他设备MAC地址的公开API,上架App Store的正规应用完全无法实现该需求,仅越狱设备可通过调用私有API实现,但对应的应用包无法通过App Store审核
- 通用注意事项
不要依赖长期未更新的老旧第三方插件,涉及系统权限、网络底层的能力如果现有插件不满足适配要求,直接通过MethodChannel自行桥接对应平台的原生实现即可。
内容的提问来源于stack exchange,提问作者flutterdevloper
相关产品推荐
相关产品推荐

