uni-app mainfest.json 文件中 app-plus 配置 useragent 在安卓端无效

uni-app mainfest.json 文件中 app-plus 配置 useragent 在安卓端无效

操作步骤:

  1. 导入附件,运行uniapp项目
  2. 主页面点击“打开webview nvue文件”按钮
  3. 打开nweb.nvue文件, 打印的 useragent 没有包含TestCustomUserAgent/andorid内容(见图1)

预期结果:

安卓端 在nvue文件内,可以获取自定义的 useagent 内容

实际结果:

没有获取自定义ua的内容

bug描述:

【安卓端】:
manifest.json 中配置

"useragent" : {  
   "value" : "TestCustomUserAgent",  
   "concatenate" : true  
},  
"useragent_android" : {  
   "value" : "TestCustomUserAgent/andorid",  
   "concatenate" : true  
}

在nvue文件中 使用webview加载h5, h5页面获取的 navigator.userAgent 没有附带上 自定义的内容(见附件 截图,图1),vue文件正常(见附件文件 图2)

相关链接:

信息项 内容
产品分类 uniapp/App
PC开发环境操作系统 Windows
PC开发环境操作系统版本号 win10
HBuilderX类型 正式
HBuilderX版本号 3.2.16
手机系统 Android
手机系统版本号 Android 10
手机厂商 小米
手机机型 红米 note7
页面类型 nvue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

Image 1
Image 2


更多关于uni-app mainfest.json 文件中 app-plus 配置 useragent 在安卓端无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html

6 回复

另外: ios端虽然可以显示, 但是要配置在“useragent_ios” 上, 如果只配置“useragent”也是无法显示的
IOS端配置自定义useragent:

mainfest.json ---- app-plus ---- useragent_ios

“app-plus” : {
“useragent” : {//只配置这个 在ios端没有效果,需要配置 useragent_ios
“value” : “TestCustomUserAgent”,
“concatenate” : true
},
“useragent_ios” : {
“value” : “TestCustomUserAgent/ios”,
“concatenate” : true
},

更多关于uni-app mainfest.json 文件中 app-plus 配置 useragent 在安卓端无效的实战教程也可以访问 https://www.itying.com/category-93-b0.html


android 平台 nvue页面的webview暂时未支持配置useagent

那怎么搞?

希望能 支持配置~~~

真是特么多的坑啊。

这是一个已知的uni-app平台差异问题。在Android平台的nvue页面中,WebView组件默认使用系统WebView内核,而manifest.json中配置的useragent对系统WebView不生效。

解决方案:

  1. 在nvue页面中手动设置UserAgent:
// 在nvue页面的webview组件中设置
<webview ref="webview" :src="url" @onPostMessage="handleMessage"></webview>

// 在mounted或页面加载时
mounted() {
    const wv = this.$refs.webview;
    wv.overrideUrlLoading({mode: 'reject'}, (e) => {});
    wv.overrideUserAgent('Mozilla/5.0 (TestCustomUserAgent/android) ...');
}
  1. 使用条件编译处理平台差异:
// #ifdef APP-PLUS
const ua = navigator.userAgent;
// 在Android nvue中可能需要通过plus.webview.currentWebview()获取
const current = plus.webview.currentWebview();
if(current) {
    current.overrideUserAgent('自定义UA内容');
}
// #endif
回到顶部