iOS15下如何通过Cordova为WKWebView禁用NSURLSession WebSocket?
Cordova WKWebView 适配iOS15 SignalR WebSocket连接问题解决方案
针对iOS15中Cordova打包的SignalR Web应用无法建立WebSocket连接的问题,可通过以下两种方式让WKWebView禁用NSURLSession WebSocket,和Safari中禁用该实验性功能的效果一致:
方法一:通过Cordova配置文件修改
- 确保已安装或更新
cordova-plugin-wkwebview-engine插件至最新版本 - 打开项目根目录的
config.xml,添加如下偏好设置:
<preference name="WKWebViewPreferences" value="{'webSocketEnabled':false}" />
该配置会强制WKWebView使用传统WebSocket实现,而非iOS15默认的NSURLSession WebSocket。
方法二:修改原生iOS代码(配置不生效时使用)
- 打开Cordova生成的Xcode项目,找到
CDVWKWebViewEngine.m文件 - 在
createConfiguration方法中,添加一行代码禁用NSURLSession WebSocket:
configuration.webSocketEnabled = NO;
- 若使用较新版本的Cordova,可能需要在
CDVWKWebViewEngineConfiguration.m文件中设置该属性
后续操作
修改完成后,重新编译iOS项目:
cordova build ios
编译完成后测试应用,即可恢复WebSocket连接功能。
内容的提问来源于stack exchange,提问作者Zhong
相关产品推荐
相关产品推荐

