uni-app打包app配置useragent调用原生地图页面回来后useragent被修改

uni-app打包app配置useragent调用原生地图页面回来后useragent被修改

开发环境 版本号 项目创建方式
Windows win10 HBuilderX

示例代码:

“useragent_android” : { “value” : “com.xxx.android”, “concatenate” : true }, “useragent_ios” : { “value” : “com.xxx.ios”, “concatenate” : true },


更多关于uni-app打包app配置useragent调用原生地图页面回来后useragent被修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html

19 回复

是调用什么API访问服务器的?

更多关于uni-app打包app配置useragent调用原生地图页面回来后useragent被修改的实战教程也可以访问 https://www.itying.com/category-93-b0.html


uni自带的request二次封装公用的请求方法,底下代码这样的 uni.request({ url: __CFG.APIURL + ‘?API=’ + api, dataType: “json”, data: json, method: “POST”, header: { ‘content-type’: ‘application/x-www-form-urlencoded’ }, success: function(res) {},fail: function(error) {} })

是缺个 Html5Plus/1.0 吧?

对,这个没了,除了 Html5Plus/1.0 没了,还有后面的(Immersed/38.0) 状态栏高度这个也没了

这个应该是bug吧,我目前看就 chooseLocation 这个方法回来会这样,选择图片就不会

回复 1***@qq.com: 你开了沉浸式了没?

回复 DCloud_Android_THB: 啥意思,页面自定义顶部那个嘛,调用chooseLocation 有的页面是自定义顶部的,有的是自带的,但是回来都不行

回复 DCloud_Android_THB: 看了下,这个页面不是自定义顶部的,调用回来就没了,然后我看刚刚看了下调用openLocation回来也是这样

回复 1***@qq.com: 沉浸式会影响(Immersed/38.0)内容

回复 DCloud_Android_THB: 哦哦,但是目前好像都会变化,使用openLocation,chooseLocation 回来都变成了 com.xxx.android,这种有什么办法处理嘛

回复 1***@qq.com: 问题已经确定,后面版本修复

回复 DCloud_Android_THB: 好的好的,望尽快修复

回复 DCloud_Android_THB: 对了,ios你们最好也看下哈,这边调试时候看安卓有这问题,ios就没打测试包调试这个问题了

回复 DCloud_Android_THB: 还有一个就是,状态栏高度有必要放在这里面嘛,这样会不会导致就像你上面说的那样,有自定义顶部的页面没有,其他页面又有的情况,这样的话app内是不是 useragent 始终都是不统一的,这样服务端校验这个是不是就容易出问题

回复 1***@qq.com: 这个沉浸式是配置设置的 文档 搜索immersed

回复 DCloud_Android_THB: 哦哦,这个设置没用过,这边设置自定义顶部状态栏是在pages.json中{ “path” : “pages/mine/mine”, “style” : { “navigationBarTitleText” : “”, “enablePullDownRefresh”: false, “navigationStyle”: “custom” } } 这里设置的,因为这边要多端适配,h5、小程序、app,这样设置不会影响吧

回复 1***@qq.com: 看起来没有影响,ua的问题,你可以先让服务端忽略后面几个字符,暂时过渡一下,我们后面版本会修复。

回复 DCloud_Android_THB: 好的收到,你说的没影响,但是我用地图的方法的时候返回后会出现 (Immersed/38.0) 这个值也丢失情况,你们也看下,怀疑和 Html5Plus/1.0 一样的问题

这是一个常见的User-Agent被重置的问题。当uni-app应用调用原生地图页面后返回时,WebView的User-Agent会被系统重置为默认值。

解决方案:

  1. 在App.vue的onShow生命周期中重新设置User-Agent
onShow: function() {
    // 每次应用从后台唤醒或页面返回时重新设置User-Agent
    if(uni.getSystemInfoSync().platform === 'android') {
        plus.navigator.setUserAgent('com.xxx.android', true);
    } else {
        plus.navigator.setUserAgent('com.xxx.ios', true);
    }
}
  1. 在调用地图页面前后手动管理User-Agent
// 调用地图前保存当前User-Agent
const originalUA = plus.navigator.getUserAgent();

// 地图页面返回后恢复User-Agent
onShow() {
    plus.navigator.setUserAgent(originalUA, true);
}
  1. 在pages.json中为特定页面配置User-Agent
{
    "path": "pages/map/map",
    "style": {
        "app-plus": {
            "useragent": {
                "value": "com.xxx.android",
                "concatenate": true
            }
        }
    }
}
回到顶部