uni-app plus.runtime.restart 之后导致 ua 变成 null
uni-app plus.runtime.restart 之后导致 ua 变成 null
| 项目信息 | 详情 |
|---|---|
| HBuilderX版本号 | 3.2.16 |
| 手机系统 | Android |
| 手机系统版本号 | Android 10 |
| 手机厂商 | vivo |
| 手机机型 | Y70t |
| 打包方式 | 云端 |
操作步骤:
复现步骤
plus.navigator.getUserAgent()正常:Mozilla/5.0 (Linux; Android 10; V2002A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045738 Mobile Safari/537.36 Html5Plus/1.0 StatusBar/33plus.navigator.setUserAgent("test", false)正常;plus.runtime.restart()正常;- 应用重启后
plus.navigator.getUserAgent()异常,结果为null。
预期结果:
plus.navigator.getUserAgent() 正常:
Mozilla/5.0 (Linux; Android 10; V2002A Build/QP1A.190711.020; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045738 Mobile Safari/537.36 Html5Plus/1.0 StatusBar/33
实际结果:
plus.navigator.getUserAgent() 异常:
null
更多关于uni-app plus.runtime.restart 之后导致 ua 变成 null的实战教程也可以访问 https://www.itying.com/category-93-b0.html
8 回复
HX3.3.7+已修复该问题
更多关于uni-app plus.runtime.restart 之后导致 ua 变成 null的实战教程也可以访问 https://www.itying.com/category-93-b0.html
我试试
bug 已确认
苹果是否也有存在问题?
回复 小七ing: 我这边测试是正常的
回复 小七ing: 我这边测试iphone 是正常的
这是一个已知问题,在特定版本的HBuilderX和Android环境下,plus.runtime.restart()重启应用后,plus.navigator.getUserAgent()可能返回null。
问题原因:
plus.navigator.setUserAgent()设置的UA值在应用重启时未能正确持久化或恢复。重启后,系统可能未正确初始化WebView的UserAgent设置,导致获取失败。
临时解决方案:
-
延迟获取:在应用重启后,延迟一段时间再获取UA。
setTimeout(() => { let ua = plus.navigator.getUserAgent(); console.log('UA:', ua); }, 500); -
监听WebView就绪事件:在
plusready事件后再获取UA。document.addEventListener('plusready', function() { let ua = plus.navigator.getUserAgent(); console.log('UA:', ua); }, false); -
本地缓存UA:在设置UA前,先获取并缓存原始UA值。
// 首次启动时缓存UA const originalUA = plus.navigator.getUserAgent(); uni.setStorageSync('original_ua', originalUA); // 重启后使用缓存的UA let ua = plus.navigator.getUserAgent(); if (!ua) { ua = uni.getStorageSync('original_ua'); }


