Flutter项目WebSocket在Android 13及以上版本无法正常工作
Flutter WebSocket在Android 13/14无法接收消息的排查方案
补全WebSocket错误与状态监听
当前代码仅处理连接建立,未监听错误和连接关闭事件,Android 13+的网络异常可能被静默吞掉,先添加监听获取关键日志:final String url = "wss://******"; if (_webSocket == null) { _webSocket = await WebSocket.connect(url); // 添加消息、错误、关闭监听 _webSocket?.listen( (message) { print('收到WebSocket消息: $message'); // 处理消息逻辑 }, onError: (error, stackTrace) { print('WebSocket错误: $error,栈信息: $stackTrace'); }, onDone: () { print('WebSocket连接已关闭'); _webSocket = null; }, ); }验证TLS证书与协议兼容性
Android 13+对HTTPS/WSS的TLS协议版本和证书要求更严格:- 确认服务器使用TLS 1.2及以上版本,禁用TLS 1.0/1.1
- 检查服务器证书是否完整可信(自签证书需手动安装到测试设备的系统信任区)
- 临时测试可改用非加密的
ws://协议(仅用于排查,正式环境禁用)
清理并优化AndroidManifest配置
配置中usesCleartextTraffic="true"对WSS加密连接无效,可移除避免干扰;若WebSocket需在后台维持,需添加前台服务相关声明:<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 后台维持WebSocket需添加的权限 --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <uses-permission android:name="android.permission.POST_NOTIFICATIONS" /> <application> <activity android:name=".YourActivityName"></activity> <!-- 若用服务维持WebSocket,添加服务声明 --> <service android:name=".WebSocketService" android:foregroundServiceType="dataSync" /> </application> </manifest>升级Flutter SDK与依赖
旧版本Flutter的WebSocket实现可能存在Android 13+兼容性问题,升级到最新稳定版(如3.10+),并执行flutter pub upgrade更新所有依赖。排查服务器端推送逻辑
检查服务器日志,确认是否向Android 13/14客户端发送了消息:- 验证服务器是否根据客户端UA或系统版本做了推送限制
- 确认WebSocket连接建立后,服务器端有没有正确绑定客户端会话
排除设备网络环境干扰
- 关闭设备的网络代理、VPN或系统安全软件
- 切换到移动网络测试,排除WiFi环境的防火墙限制
内容的提问来源于stack exchange,提问作者Teatimegreen1
相关产品推荐
相关产品推荐

