收藏
回答

小程序内置web-view的userAgent问题

框架类型 问题类型 操作系统 操作系统版本 手机型号 微信版本
小程序 Bug iOS 11.4 iPhone6S Plus 6.7.0

小程序内的web-view所打开的页面获取的userAgent中不包含小程序特征,无法识别是在小程序web-view中打开的页面,而在安卓端或开发者工具端web-view的UA中都有miniprogram或miniProgram关键字。


官方文档所提供的

window.__wxjs_environment

这种方式实际使用起来诸多不便(需等待WeixinJSBridge,以及接口调用需单独传参),希望能在UA中加入特征字符串,感谢。

回答关注问题邀请回答
收藏

11 个回答

  • 黄思程
    黄思程
    置顶回答2018-08-15

    目前因为iOS低版本系统的原因没有处理UA,这里我们会想办法解决。

    如果是前端判断小程序环境,想要同步的方法,需要兼容一下,在iOS可以同步取得 window.__wxjs_environment,在安卓则判断UA上是否有miniprogram

    2018-08-15
    有用
    回复 3
    • 曹林
      曹林
      2019-05-06

      官方文档上说微信7.0.0以上才可以通过判断userAgent中包含miniProgram字样来判断小程序web-view环境,但是我在安卓微信 6.7.2 中发现userAgent中包含miniProgram,这个是否需要对低版本做兼容?异步获取真的很难受。。。

      2019-05-06
      1
      回复
    • Lizzie
      Lizzie
      2019-12-03
      你说的这个同步,是不需要监听 WeixinJSBridgeReady 吗
      2019-12-03
      回复
    • 熬夜佩奇
      熬夜佩奇
      2023-05-12
      现在能直接用miniProgram判断了吗
      2023-05-12
      回复
  • 晨
    2018-06-27

    感谢反馈,之前由于实现上的问题没有处理UA,后续我们会优化

    2018-06-27
    有用
    回复 1
    • 吴芊铖
      吴芊铖
      2018-07-19

      希望能及时更新优化, 目前 webview 内嵌 h5 页面判断小程序环境十分麻烦,

      window.__wxjs_environment  有设备兼容性差异,判断不准

      wx.miniProgram.getEnv() 这个是一个异步方法, 我们希望能有一个同步判断小程序环境的方法

      2018-07-19
      2
      回复
  • 此用户很bt🤪
    此用户很bt🤪
    2019-04-30

    优化个鬼,安卓7.0.4.1420(0x27000435)版本居然把miniProgram标识干掉了,大写的服

    2019-04-30
    有用 1
    回复
  • lSeven
    lSeven
    2019-04-29


    请问这个问题现在解决了么?ios中的window.__wxjs_environment是异步的么

    2019-04-29
    有用 1
    回复
  • AsiaWang
    AsiaWang
    2018-12-20

    这个必须顶!我们是通过url加上标志来同步判断小程序环境的。为了防止多个页面跳转丢失,就把标志参数写入cookie,不设置过期参数,理论是session级别。然鹅,webview销毁时候cookie并不清除。小程序webview又和微信webview cookie共享,导致只要在微信打开的页面都判断是小程序环境,很崩溃...如果UA加上标志那可是省了不少麻烦

    2018-12-20
    有用 1
    回复 1
    • 笑脸
      笑脸
      2019-06-14

      webview销毁时候cookie并不清除

      --------------- 这个可以用sessionStorage啊

      2019-06-14
      回复
  • 术虫
    术虫
    2018-07-30

    关键是服务端,不能直接判断

    2018-07-30
    有用 1
    回复 2
    • 为信而来
      为信而来
      2018-07-30

      我现在也遇到了这样的问题

      可能只能降级处理,都当成是在微信的浏览器中处理

      2018-07-30
      回复
    • 术虫
      术虫
      2018-07-30

      因为支付问题,必须得做判断,我是在小程序进来的地址里加参数来判断的。

      2018-07-30
      回复
  • 笨神
    笨神
    12-08

    php 我是这么判断的,安卓目前没问题。不知道兼容性怎样。苹果的还没测。

    function containsMiniProgram($string) {

        return strpos($string, 'miniProgram') !== false;

    }

    function in_wxapp_mini() {

        // 获取用户代理字符串

        $userAgent = $_SERVER['HTTP_USER_AGENT'];

        

        //Mozilla/5.0 (Linux; Android 12; ABR-AL00 Build/HUAWEIABR-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.103 Mobile Safari/537.36 XWEB/1300149 MMWEBSDK/20241101 MMWEBID/5064 MicroMessenger/8.0.54.2760(0x280036CC) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64

        

        //Mozilla/5.0 (Linux; Android 12; ABR-AL00 Build/HUAWEIABR-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/130.0.6723.103 Mobile Safari/537.36 XWEB/1300149 MMWEBSDK/20241101 MMWEBID/5064 MicroMessenger/8.0.54.2760(0x280036CC) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64 miniProgram/wx99a9d7f497de"

        

        //dump($userAgent);

        //die;

        // 检查是否包含微信小程序的标识

        if(containsMiniProgram($userAgent) ){

            return  true;

        }

        return  false;

       

    }


    12-08
    有用
    回复
  • 沐风
    沐风
    2021-01-04

    请问这个问题有结论了吗,是否已优化完成呢

    2021-01-04
    有用
    回复
  • TuTu
    TuTu
    2019-07-30

    请问这个问题有结论了吗?我这边试了iphonex的小程序webview的ua里面是带miniProgram的,不知有没有覆盖到所有ios

    2019-07-30
    有用
    回复
  • 垮起个鸭脸
    垮起个鸭脸
    2019-05-14

    服务端不能直接判断,有什么解决方法吗? 我需要知道webview中用户的ua 到底是什么?比如说ios或者是Android。。。

    2019-05-14
    有用
    回复

正在加载...

登录 后发表内容