cordova-plugin-esptouch在iOS 16上无法工作的问题求助
Cordova集成esptouch插件在iOS 16上无法工作的排查求助
我使用Cordova/PhoneGap开发的App集成了cordova-plugin-esptouch插件,在iOS 16.0以下版本运行正常,但在iOS 16上无法正常工作。已尝试卸载并重装插件,也测试了cordova-plugin-esptouch 2.0版本,均未解决问题,恳请提供排查思路。
iOS 13/14/15调试日志
2023-02-06 21:27:05.014416+0100 test[2071:64929] ssid: Eki, bssid: 00:00:00:00:00:00, apPwd: eki123 2023-02-06 21:27:05.016094+0100 testn[2071:64929] Welcome Esptouch v0.3.7.0 2023-02-06 21:27:05.016216+0100 test[2071:64929] ESPTouchTask init 2023-02-06 21:27:05.017034+0100 test[2071:64929] ##########################client init() _sck_fd4=10 2023-02-06 21:27:05.017115+0100 test[2071:64929] ##########################client init() _sck_fd6=13 2023-02-06 21:27:05.017191+0100 test[2071:64929] ##########################server init(): _sck_fd4=14 2023-02-06 21:27:05.017318+0100 test[2071:64929] ##########################server init(): _sck_fd6=15 2023-02-06 21:27:05.017381+0100 test[2071:64929] ESPTouchTask app server port is 18266 2023-02-06 21:27:05.017454+0100 test[2071:64929] ESPTouchTask executeForResult() localInetAddr: 192.168.2.137 2023-02-06 21:27:05.018208+0100 test[2071:64929] ESPTouchTask __execute() send gc code 2023-02-06 21:27:05.018222+0100 test[2071:64930] ESPTouchTask beginBackgroundTask() entrance 2023-02-06 21:27:05.020075+0100 test[2071:64930] ESPTouchTask __listenAsyn() start an asyn listen task, current thread is: <NSThread: 0x282bb6e00>{number = 5, name = (null)} 2023-02-06 21:27:05.020192+0100 test[2071:64930] ESPTouchTask __listenAsyn() expectOneByte: 18 2023-02-06 21:27:11.026271+0100 test[2071:64929] ESPTouchTask __execute() send gc code
iOS 16调试日志
2023-02-06 21:32:11.415065+0100 test[14030:3910256] ssid: Eki, bssid: 00:00:00:00:00:00, apPwd: eki123 2023-02-06 21:32:11.415841+0100 test[14030:3910256] Welcome Esptouch v0.3.7.0 2023-02-06 21:32:11.415941+0100 test[14030:3910256] ESPTouchTask init 2023-02-06 21:32:11.416769+0100 test[14030:3910256] ##########################client init() _sck_fd4=8 2023-02-06 21:32:11.416833+0100 test[14030:3910256] ##########################client init() _sck_fd6=9 2023-02-06 21:32:11.416938+0100 test[14030:3910256] ##########################server init(): _sck_fd4=10 2023-02-06 21:32:11.417042+0100 test[14030:3910256] ##########################server init(): _sck_fd6=11 2023-02-06 21:32:11.417099+0100 test[14030:3910256] ESPTouchTask app server port is 18266 2023-02-06 21:32:11.417156+0100 test[14030:3910256] ESPTouchTask executeForResult() localInetAddr: 192.168.2.109 2023-02-06 21:32:11.417755+0100 test[14030:3910256] ESPTouchTask __execute() send gc code 2023-02-06 21:32:11.417810+0100 test[14030:3910487] ESPTouchTask beginBackgroundTask() entrance client: sendto fail, but just ignore it : No route to host 2023-02-06 21:32:11.420914+0100 test[14030:3910487] ESPTouchTask __listenAsyn() start an asyn listen task, current thread is: <NSThread: 0x2817e6300>{number = 8, name = (null)} 2023-02-06 21:32:11.421004+0100 test[14030:3910487] ESPTouchTask __listenAsyn() expectOneByte: 18 client: sendto fail, but just ignore it : No route to host client: sendto fail, but just ignore it : No route to host client: sendto fail, but just ignore it
排查思路建议
- 检查本地网络权限:iOS16对本地网络(Local Network)权限管控更严,需在
Info.plist中添加NSLocalNetworkUsageDescription字段说明权限用途,同时确保用户已授予该权限。Esptouch依赖广播包传输数据,无此权限会导致发送失败。 - 验证广播地址适配:iOS16可能改变了广播地址的处理逻辑,检查插件是否使用了正确的广播地址(如255.255.255.255),或是否需要适配IPv6环境,确认底层网络代码在iOS16下能正确获取广播地址。
- 查看插件适配状态:检查cordova-plugin-esptouch的官方仓库Issue,确认是否有其他开发者遇到iOS16兼容问题,或是否存在未合并的修复分支/PR。
- 强制绑定Wi-Fi接口:iOS16在多网络环境(Wi-Fi+蜂窝)下,插件可能未正确绑定到Wi-Fi接口,导致数据包走错误路由。可尝试在代码中强制指定Wi-Fi接口的IP来发送广播。
- 抓包对比网络请求:用XCode的Network Inspector工具抓取iOS15和iOS16下的网络包,对比差异,确认广播包是否发送成功、目标地址是否正确。
- 升级Cordova iOS平台:确保使用的cordova-ios版本支持iOS16(如6.2.0及以上),旧版本的Cordova iOS可能存在网络相关的兼容性问题。
内容的提问来源于stack exchange,提问作者EkiWar
相关产品推荐
相关产品推荐

