评论

微信 schema 跳转之非官方文档

微信 schema 跳转方式

微信“应该”是最近开放了 schema 跳转小程序 的能力,大大方便了短信、邮件、外部网页等唤起微信小程序。

schema 链接格式大体是这样:weixin://dl/business/?ticket=l69894d682fa8dbafe724a0ca3950741e,但是这段文本在安卓端无法识别。小规模测试结果如下:

后来想到用一个正常能够识别的网页地址,内容是重定向到指定的 schema 链接。这就是擅长的领域了,query 参数上带上 schema 链接,location.href 一下不就行了。这里就不 show 代码了,能看到文章的你一定行。

但是,发现在部分安卓手机下(如小米)还是没反应,原来简单的 schema 跳转水这么深的,于是百度谷歌了一下,找到了下面两份关键材料:

看源码也不多,总结下来,因不同系统和浏览器对 schema 规范的理解不同,还有一些商业因素,不同环境下面需要用不同的方式进行跳转,甚至有的环境你根本就跳不了

时间紧,任务重。简单处理吧,不同方式都来一遍,谁好使就用谁。所以简单总结了下,能用的几种方式:

  • location 跳转
  • a 链接跳转
  • iframe 跳转

以上三种方式,逐一试用,最后实在不行就不行吧,简单处理,看有没有大神补充的。

相关代码如下:

  • location
location.href = "weixin://dl/business/?ticket=l69894d682fa8dbafe724a0ca3950741e";
  • a 链接跳转
var aLink = document.createElement("a");
aLink.className = 'call_up_a_link';
aLink.href = "weixin://dl/business/?ticket=l69894d682fa8dbafe724a0ca3950741e";
aLink.style.cssText = "display:none;width:0px;height:0px;";
document.body.appendChild(aLink);
aLink.click();
  • iframe
var iframe = document.createElement('iframe');
iframe.className = 'call_up_iframe';
iframe.src = "weixin://dl/business/?ticket=l69894d682fa8dbafe724a0ca3950741e";
iframe.style.cssText = "display:none;width:0px;height:0px;";
document.body.appendChild(iframe);

以上代码均可从参考资料中找到出处,感谢

是直接一进来就执行,还是事件触发,都可以。或者是一开始进来就执行,失败了显示几个可选跳转按钮让用户手动触发跳转。

但是关键问题还有一个,如何判断是可以成功唤起了呢?上述 github 代码里提到了一个根据页面 hidden 状态,但不够精准,如果用户没有选择跳转到微信呢?这是另一个需要深究的问题。

出于时间考虑,先以业务交付优先,如果有朋友知道的也可以一起讨论下。

另行文时间短,以技术交流为主,若有瑕疵,欢迎指出。

附上 vue 版本源码:微信 schema 跳转


参考链接:

最后一次编辑于  2021-01-04  
点赞 18
收藏
评论

16 个评论

  • yhzdys
    yhzdys
    2021-01-04

    nice

    2021-01-04
    赞同 2
    回复
  • 小肥羊
    小肥羊
    2021-01-04
    很棒,正好需要
    2021-01-04
    赞同 1
    回复
  • Yunior
    Yunior
    2021-01-08

    业内标准的杂乱真实苦了开发人员啦 ,楼主分享的不错,点赞。

    2021-01-08
    赞同 2
    回复 2
    • 拾迹
      拾迹
      2021-01-08
      哈哈 谢谢啦
      2021-01-08
      回复
    • 秋
      2021-04-29回复拾迹
      请问如果需要传递参数到小程序的话怎么用呢?
      2021-04-29
      回复
  • ML.
    ML.
    03-18

    能够实现外部浏览器跳转的微信app,并唤起指定的h5页面么(不是微信小程序页面)

    03-18
    赞同
    回复
  • 浅暗花漓
    浅暗花漓
    2021-11-29

    魅族 安卓8 三种方式都跳转不了

    2021-11-29
    赞同
    回复
  • 盼星望月盼上苍盼吏治如毛神洲重降
    盼星望月盼上苍盼吏治如毛神洲重降
    2021-11-23
    这只是我自己写的东西,为了便于修改我便粘贴想放到休藏中去,点了后见里面有个翻译,又点了一下便一成了一些莫名其妙的数字与符号了,却再也没有回原的程序了,白费了我的精力,谁能提醒这是什么?应该怎么回原成文字吗?
    2021-11-23
    赞同
    回复
  • 木木各各
    木木各各
    2021-08-25

    vue 版本源码 地址打不开了,能在发一份吗?谢谢您了

    2021-08-25
    赞同
    回复
  • 黑积科技
    黑积科技
    2021-05-19
    <script type="text/javascript">
     /**
      * h5跳转到微信端打开任意站
      *
      * http://www.jumpwx.com/
      * 
      **/
     //函数名为wxticket
      window.onload=function runoob(){
        
      // alert("进来了");
       location.href ="http://mmbizurl.net.cn/EV2Gi";
    location.href ="weixin://dl/business/?t=xxxxx";
      }
    
    </script>
    


    2021-05-19
    赞同
    回复
  • 収
    2021-04-29

    还是不行吧 试了一下

    2021-04-29
    赞同
    回复
  • 小猪
    小猪
    2021-03-02

    小米机型自带的浏览器貌似不能自动触发跳转,是不是只能手动点击按钮触发呢

    2021-03-02
    赞同
    回复

正在加载...

登录 后发表内容