Cordova打包iOS应用在Xcode模拟器及新款iPhone运行卡顿报错
Cordova iOS 6.2.0 触摸卡顿IPC超时修复方案
根因说明
该报错是Cordova iOS 6.1.0及以上版本内置的WKWebView触摸事件同步响应机制导致的兼容性问题,仅在iOS 14及以上系统的设备上触发:新版本系统对WKWebView的IPC通信时序要求更严格,触摸事件的同步等待逻辑容易触发超时,旧款iPhone 6最高支持iOS 12系统,不受该逻辑影响,Android、Windows端使用的Web内核不涉及该套机制因此运行正常。
修复方案
- 方案1:降级Cordova iOS平台版本到6.1.0,该版本未引入触摸事件同步校验逻辑,无兼容问题。执行命令:
cordova platform remove ios && cordova platform add ios@6.1.0
执行完成后重新构建项目即可验证。 - 方案2:若需保留Cordova iOS 6.2.0版本,在项目根目录的config.xml中添加如下配置项,关闭触摸事件同步等待逻辑:
<preference name="DisableTouchSyncReply" value="true" />
添加后重新打包即可生效。 - 方案3:若以上方案仍未解决,排查项目中引入的第三方Cordova插件,若存在全局触摸拦截、手势识别、点击统计类插件,检查其实现逻辑是否在主线程执行耗时操作,将耗时逻辑迁移到子线程即可消除IPC通信阻塞。
临时验证方式
打开Xcode项目,定位到CDVWebViewEngine.m源码文件,搜索WebPage_TouchEventSync相关代码段,临时注释掉同步等待的逻辑后运行项目,若卡顿消失即可确认是该机制导致的问题。
内容的提问来源于stack exchange,提问作者Digital Apprentice
相关产品推荐
相关产品推荐

