看了微信开放社区多篇关于“wx.onGetWifiList不能正常回调”的问题和回答。要么是贴文档的,要么说wx.canIUse判断API是否可用的,总之没有找到可行解决方法。在这里记录一下自己的解决方法,如有问题欢迎提出。
文档
iOS
- startWifi: 初始化 Wi-Fi 模块
- getWifiList: 请求获取周边 Wi-Fi 列表。本接口会跳转到系统设置中的微信设置页,需引导用户进入「无线局域网」设置页,手动连接设备。(iOS 11.0 及 11.1 版本因系统问题失效)
- onGetWifiList: 获取到 Wi-Fi 列表数据事件
- setWifiList: 设置 Wi-Fi 列表 中 AP 的相关信息,辅助用户进行连接
- onWifiConnected: 连接上 Wi-Fi 的事件回调
问题描述:
- 根据官方文档提供的iOS 5个步骤:
- 执行
wx.startWifi()
会跳转到系统的微信设置 - 需要自行进入“设置 - 无线局域网”,然后等待无线网刷新完成
- 无线网刷新完成后,自行回到“微信”(注意:这里回到微信后会进入
onShow()
生命周期),# wx.onGetWifiList
无法回调
解决方法(亲测有效):
前提: onShow()
// 页面出现在前台时执行/生命周期回调—监听页面显示/页面显示/切入前台时触发
把wx.onGetWifiList()
放在onShow()
中,在第3步骤“无线网刷新完成后,自行回到“微信””后,便可以正常执行wx.onGetWifiList()
的回调函数,可以在控制台打印,手机打开调试。