所有浏览器跳转-微信小程序方法总结

5,048 阅读6分钟

本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!

本文会教你所有可以跳转小程序的方法,帮你解决运营的需求。

内容比较精彩,建议先点赞,收藏,再继续看

微信浏览器跳转小程序

使用wx-open-launch-weapp标签跳转

  • 需要注意的前提条件 更多文档详情
    1. 已认证的服务号, 登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”
    2. 已认证的非个人主体的小程序,使用小程序云开发的静态网站托管绑定的域名下的网页,可以使用此标签跳转任意合法合规的小程序
    3. 在需要调用JS接口的页面引入如下JS文件:res.wx.qq.com/open/js/jwe… (支持https)
    4. 与使用JS-SDK配置方式相同,所有需要使用开放标签的页面必须先注入配置信息,并通过openTagList字段申请所需要的开放标签,否则将无法使用(同一个url仅需调用一次)。开放标签的申请和JS接口的申请相互独立,因此是可以同时申请的。
    wx.config({
      debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
      appId: '', // 必填,公众号的唯一标识
      timestamp: , // 必填,生成签名的时间戳
      nonceStr: '', // 必填,生成签名的随机串
      signature: '',// 必填,签名
      jsApiList: [], // 必填,需要使用的JS接口列表
      openTagList: [] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
    });
    
    1. 通过ready接口处理成功验证后才能正常使用wx-open-launch-weapp
  • 完成上面的步骤即可使用wx-open-launch-weapp,使用方法如下:
<wx-open-launch-weapp
  id="launch-btn"
  username="gh_xxxxxxxx"
  path="pages/home/index?user=123&action=abc"
>
  <script type="text/wxtag-template">
    <style>.btn { padding: 12px }</style>
    <button class="btn">打开小程序</button>
  </script>
</wx-open-launch-weapp>
<script>
  var btn = document.getElementById('launch-btn');
  btn.addEventListener('launch', function (e) {
    console.log('success');
  });
  btn.addEventListener('error', function (e) {
    console.log('fail', e.detail);
  });
</script>
  • 注意事项
    1. 开放标签属于自定义标签,Vue会给予未知标签的警告,可通过配置Vue.config.ignoredElements来忽略Vue对开放标签的检查
    Vue.config.ignoredElements = ['wx-open-launch-app''wx-open-launch-weapp'];
    
    1. 如果所使用的标签允许提供插槽,由于插槽中模版的样式是和页面隔离的,因此需要注意在插槽中定义模版的样式。插槽模版及样式均需要通过 <script type="text/wxtag-template"></script> 进行包裹。另外,对于具名插槽还需要通过 slot 属性声明插槽名称,下文标签插槽中的default插槽为默认插槽,可不声明插槽名称。
    2. 页面中与布局和定位相关的样式,如position: fixed; top -100;等,尽量不要写在插槽模版的节点中,请声明在标签或其父节点上;
    3. 对于有CSP要求的页面,需要添加白名单frame-src https://*.qq.com webcompt:,才能在页面中正常使用开放标签
    4. 微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上。
  • 测试
    1. 现在测试这个开发标签已经很人性化了,可以直接使用微信开发工具的 公众号网页调试 可以马上看到效果(提前是完成上面的注意前提条件)

使用 URL Scheme 链接跳转小程序

  • 获取 URL Scheme 链接方式有2种
    方法一: 通过登录公众平台,小程序管理后台「工具」-「生成URL Scheme」入口可以获取打开小程序任意页面的URL Scheme(位置在登录后右上角),可以填写你需要跳转小程序的页面地址及参数,点击生成即可

image.png

image.png
方法二: 通过小程序api接口服务器端调取来生成【URL Scheme】短地址,配置对应的参数即可 文档详情

image.png

  • 如何使用
    1. 生成的短链接,可以设置有效时间的,测试的尽量设置长点
    2. iOS系统支持识别URL Scheme,可在短信等应用场景中直接通过Scheme跳转小程序
    3. Android系统不支持直接识别URL Scheme,用户无法通过Scheme正常打开小程序,开发者需要使用H5页面中转,再跳转到Scheme实现打开小程序,为了方便起见,我们统一写一个H5页面,通过脚本跳转我们需要的小程序,如下:
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>...</title>
    </head>
    <body>
        <button onclick="bintop()">如果跳转失败,请点击按钮</button>
    </body>
    <script>
        window.onload=function runoob(){
          bintop();
        }
        function bintop (e) {
            window.location.href = "weixin://dl/business/?t=2Uq63aGbY9r"
        }
    </script>
    </html>
    
  • 测试
    1. 本短链接现在已经支持非微信浏览器微信浏览器使用,测试非常方便
    2. 除了这个生成短链接,还有另一个相似的URL link,这个短链接可能会比较强,但是前提条件是使用小程序云开发,通过小程序云开发才能生成 文档详情点我

嵌套小程序的H5跳回小程序页面

  • 小程序如何嵌套H5
    • 在原生页面写web-view标签,通过src属性引入需要的H5链接
  • 跳回小程序原生
    1. web-view网页中可使用JSSDK 1.3.2(建议使用jssdk1.6.0以上的)提供的接口返回小程序页面
    2. 从微信7.0.0开始,可以通过判断userAgent中包含miniProgram字样来判断小程序web-view环境
    3. 判断当前时小程序环境即可使用微信提供的api跳转,如下:更多文档内容
    // <script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.3.2.js"></script>
    // javascript
    wx.miniProgram.navigateTo({url: '/path/to/page'})
    wx.miniProgram.postMessage({ data: 'foo' })
    wx.miniProgram.postMessage({ data: {foo: 'bar'} })
    wx.miniProgram.getEnv(function(res) { console.log(res.miniprogram) })
    
  • 传参
    1. 小程序只能单向或者一定条件才能触发参数回传到小程序,不能像平时写js一样,点下事件就能把参数传回原生小程序里面
    2. 小程序提供bindmessage方法接收网页的回传参数,但是需要在一些生命周期才能接收 网页向小程序 postMessage 时,会在特定时机(小程序后退、组件销毁、分享)触发并收到消息。e.detail = { data },data是多次 postMessage 的参数组成的数组
    <web-view src='' bindmessage="bindmessage"></web-view>
    // js部分接收
    bindmessage(){}
    
  • 使用web-view注意事项
    1. 网页内 iframe 的域名也需要配置到域名白名单
    2. 开发者工具上,可以在 web-view 组件上通过右键 - 调试,打开 web-view 组件的调试
    3. 每个页面只能有一个 web-viewweb-view 会自动铺满整个页面,并覆盖其他组件
    4. web-view 网页与小程序之间不支持除 JSSDK 提供的接口之外的通信
    5. 在 iOS 中,若存在JSSDK接口调用无响应的情况,可在 web-view 的 src 后面加个#wechat_redirect解决
    6. 避免在链接中带有中文字符,在 iOS 中会有打开白屏的问题,建议加一下 encodeURIComponent

总结

文章已经介绍了,微信环境到非微信环境跳转小程序的方法,只要按照文中内容提示和注意项基本不会有太多问题,因为这些已经是比较稳定的功能,一般都会出现太大的坑,如有其它问题或者想了解小程序的其它内容,可以留言我会准时更新你们想要的文章~

看都看完了,记得点赞哈,谢谢