uni-app自定义ua ios完全用 安卓未完全用
uni-app自定义ua ios完全用 安卓未完全用
| 信息类别 | 详情 |
|---|---|
| 产品分类 | uniapp/App |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| HBuilderX类型 | 正式 |
| HBuilderX版本号 | 4.84 |
| 手机系统 | Android |
| 手机系统版本号 | Android 15 |
| 手机厂商 | vivo |
| 手机机型 | iqoo neo9spro+ |
| 页面类型 | vue |
| vue版本 | vue2 |
| 打包方式 | 云端 |
| 项目创建方式 | HBuilderX |
示例代码:
"useragent_android" : {
"value" : "com.<strong><em>.android",
"concatenate" : false
},
"useragent_ios" : {
"value" : "com.</em></strong>.ios",
"concatenate" : false
},
操作步骤:
上述操作
预期结果:
上面描述
实际结果:
上面描述
bug描述:
打包app使用自定义ua,安卓在我自定义com.<strong><em>.android基础上后面还拼接上了html5plus 1.0,但是ios完全用了我自定义com.</em></strong>.ios;目前遇到的问题就是打包app进入网页后,网页是通过ua判断的,依据com.***.android和html5plus判断我是app并且是否是uniapp还是原生app的,这里应该最好统一吧,要加都加,要二次修改不加就都不加吧,让开发者自己拼接上也可以,这样会不会好点

更多关于uni-app自定义ua ios完全用 安卓未完全用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
你好 用的那个api获取的UA plus.navigator.getUserAgent?
更多关于uni-app自定义ua ios完全用 安卓未完全用的实战教程也可以访问 https://www.itying.com/category-93-b0.html
说错了,后台服务器拿到的吧好像
这里是uniapp app跳转的原生的h5页面,后台获取给到h5页面的
回复 1***@qq.com: immersed/38 是安卓状态栏高度 这个需求上暂时不会去掉 html5plus会去掉
回复 DCloud_Android_ST: 哦哦,好吧,我的想法是这种的ios和安卓规则统一一下应该好点吧,要不然改完不去了解的情况下都以为使用自定义就一样了,所以我提了这个算是建议吧
回复 1***@qq.com: 嗯 我们要考虑向下兼容的。直接去掉会导致部分app异常
回复 DCloud_Android_ST: okok,谢啦
根据你的描述,这是uni-app在Android和iOS平台上对自定义User-Agent处理不一致的问题。
问题分析:
- iOS平台:完全使用了你在
manifest.json中配置的自定义UA(com.***.ios),没有拼接额外内容。 - Android平台:在你自定义的UA(
com.***.android)后面自动拼接了html5plus 1.0,导致最终UA变为com.***.android html5plus 1.0。
这种平台差异确实会给需要精确识别UA的业务逻辑带来困扰,特别是你提到的网页需要通过com.***.android和html5plus来判断应用类型。
当前解决方案:
对于Android平台,由于系统会自动拼接html5plus标识,你可以采取以下方式统一处理:
-
在网页端调整判断逻辑: 将判断条件改为同时匹配
com.***.android和html5plus,而不是仅依赖自定义部分。 -
在App端动态设置UA: 可以在App启动时通过
plus.navigator.setUserAgent()动态设置完整的UA,覆盖默认行为:// 在App.vue的onLaunch中 if (uni.getSystemInfoSync().platform === 'android') { plus.navigator.setUserAgent('com.***.android html5plus 1.0'); }


