微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app

简介: 微信浏览器内 h5 直接唤醒 app 之 微信开放标签 wx-open-launch-app

以前微信浏览器内想要直接唤醒 app 要么接微信的应用宝要么你是腾讯的干儿子。

而在微信在2020年5月分推出了“微信开放标签”功能

wx-open-launch-app 用于微信浏览器内直接唤醒 app ,也可通过携带参数直接进入app相应的内页。

现在不是干儿子,只要按照规定接入微信SDK就直接可以使用此功能。

 

 

真机演示

1、微信浏览器内 h5 网页

 

2、点击后会弹出微信 Native 的弹层提示确认是否唤起 app

 

3、成功唤起 app 并进入相应的页面

 

 

 

一、适用环境

微信版本要求为:7.0.12及以上。 系统版本要求为:iOS 10.3及以上、Android 5.0及以上

 

二、接入微信JS-SDK

按微信JS-SDK要求绑定安全域,并通过config接口注入权限验证配置

接js-sdk可参见我加一篇博文

微信JS-SDK“分享信息设置”API及数字签名生成方法(NodeJS版本)

https://www.cnblogs.com/willian/p/4254963.html

 

wx.config({
    appId: '',
    debug: true,
    timestamp: '',
    nonceStr: '',
    signature: '',
    jsApiList: [
        'onMenuShareTimeline', // 分享给好友
        'onMenuShareAppMessage', // 分享到朋友圈
    ],
    openTagList: ['wx-open-launch-app’] // 获取开放标签权限
});

需要注意的点:

1、符合开放平台列出的要求 https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_H5_Launch_APP.html

2、app 需要根据接入微信 sdk https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html

3、wx.config 内列出使用到的 openTagList

 

在微信开发者工具内打开你的网页测试如果显示

{errMsg: "config:ok”}

说明你已经接入JS-SDK成功了

遗憾的是截至2020年7月13号为止,微信开发者工具还是无法支持微信开放标签的调试功能,只能在手机上调试并且是在加了微信安全域名的服务器环境下调试,着实麻烦

 

三、在 VUE 项目内使用 wx-open-launch-app

由于 wx-open-launch-app 这个标签在VUE项目编译时识别不了会报错,得在main.js文件内加上忽略报错的代码

// 忽略自定义元素标签抛出的报错
Vue.config.ignoredElements = [
    'wx-open-launch-app',
];
new Vue({
    el: '#app',
    template: '<app/>',
    components: { app }
})

wx-open-launch-app 标签组件

<wx-open-launch-app
    :id="id"
    class="launch-btn"
    :appid="appId"
    :extinfo="extinfoStr"
    >
    <script type="text/wxtag-template">
        <style>.btn {height: 96px;}</style>
        <div class="btn">打开app</div>
    </script>
</wx-open-launch-app>

注意

1、标签内的原本的 <template> slot 需要替换成 <script type="text/wxtag-template”>

2、经过测试发现标签内定义的样式真的很尴尬,且不受控制,所以我们直接将标签用 CSS 绝对定位并设透明度为 opacity: 0, 盖在了我们原本的设计图上

3、透明度为 opacity: 0 的标签 <script type="text/wxtag-template"> 不能为空,否则宽高会被解析为0,也就是按钮根本点击不到

4、标签内 appid 填写的是 微信开放平台(https://open.weixin.qq.com/)内客户端创建应用时的appid(非微信公众号)

5、extinfo 内填的是传递给唤起 app 的数据,而我们发现微信7.0.15版本在ios上,有概率会接收数据失败,不知道是微信的问题还是我们IOS的写法问题

6、在 VUE 的 mounted 生命周期回调函数内侦听开放标签的回调事件

mounted(){
    var btn = document.getElementById(this.id)
    btn.addEventListener('launch', e => {
        // 在此处可设置粘贴板内数据,数据是传递给 app 的参数进,
        console.log('success');
    });
    btn.addEventListener('error', e => {
        // 在此处可设置粘贴板内数据,数据是传递给 app 的参数进,
        console.log('fail', e.detail);
        // 唤醒失败的情况下,可用于降级处理比如在此处跳转到应用宝
    });
}

7、如果微信版本低于7.0.12 开放标签是无法使用的,所以最好在开放标签外套一层 DIV 用于点击事件,在事件中断段微信版本号如果低于,则降级到应用宝之类的方案

<div @click="launch">
    <wx-open-launch-app
        :id="id"
        class="launch-btn"
        :appid="appId"
        :extinfo="extinfoStr" 
      >
      <script type="text/wxtag-template">
        <style>.btn {height: 96px;}</style>
        <div class="btn">打开app</div>
      </script>
    </wx-open-launch-app>
  </div>
launch(){
    // 在此处可设置粘贴板内数据,数据是传递给 app 的参数进
    if(!this.enable){
        // 不支持标签降级处理
    }
}

 

四、最后当然是封装成项目中的一个组件

<template>
  <div @click="launch">
    <wx-open-launch-app
        :id="id"
        class="launch-btn"
        :appid="appId"
        :extinfo="extinfoStr"
      >
      <script type="text/wxtag-template">
        <style>.btn {height: 96px;}</style>
        <div class="btn">打开app</div>
      </script>
    </wx-open-launch-app>
  </div>
</template>
<script>
  import globalConfig from '@assets/js/config'
  import { copyToClipboard } from '@assets/js/utils'
  import { getWeixinVersion, onBridgeReady } from '@assets/js/weixin/weixin'
  
  let idIndex = 0
  export default {
    name: 'LaunchButton',
    props: {
      extinfo: {
        type: Object,
        default: ''
      },
    },
    watch: {
      extinfo: {
        handler(n){
          this.extinfoStr = JSON.stringify(n)
        },
        immediate: true
      }
    },
    data() {
      idIndex++
      return {
        id: 'wxopenLanchAppId' + idIndex,
        appId: globalConfig.WEIXIN_APP_ID,
        enable: false,
        extinfoStr: '',
      }
    },
    methods: {
      redirectToApp(){
        setTimeout(()=>{
          window.location.href = globalConfig.YING_YONG_BAO
        }, 400)
      },
      setClipboard(){
        console.log('start copy')
        let copyObject = {
          app: 'yogo'
        }
        for(var k in this.extinfo){
          copyObject[k] = this.extinfo[k]
        }
        copyObject = JSON.stringify(copyObject)
        copyToClipboard(copyObject)
        console.log('end copy')
      },
      launch(){
        this.setClipboard()
        if(!this.enable){
          this.redirectToApp()
        }
      }
    },
    created(){
      // 微信版本号大于 7.0.12 开放标签才可进行 唤醒 app 跳转
      const wxVersion = getWeixinVersion()
      if(wxVersion){
        let v = wxVersion.split('.')
        if(v[0]>=7){
          if(v[1]>=0){
            if(v[2]>=12){
              this.enable = true
            }
          }
        }
      }
    },
    mounted(){
      var btn = document.getElementById(this.id)
      btn.addEventListener('launch', e => {
        this.setClipboard()
        console.log('success');
      });
      btn.addEventListener('error',  e => {
        console.log('fail', e.detail);
        this.setClipboard()
        this.redirectToApp()
      });
    }
  }
</script>
<style lang="scss" scoped>
  .launch-btn{
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 1;
    opacity: 0;
    // background: red;
  }
</style>

 

五、参考微信官方链接

接入指南

https://developers.weixin.qq.com/doc/oplatform/Mobile_App/Access_Guide/iOS.html

微信内网页跳转 app 功能

https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_H5_Launch_APP.html

JS-SDK使用步骤

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1

开放标签说明文档

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html

相关文章
|
17天前
|
存储 人工智能 移动开发
uni-app+vue3接入deepseek-v3搭建跨端ai流式(小程序+app+h5)
基于Uniapp+Vue3+Markdown接入DeepSeek-V3聊天大模型,支持编译到H5+小程序+App端。实现流式输出、支持亮色/暗黑主题、代码高亮、会话本地存储等功能。
177 12
|
2月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
175 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
2月前
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
196 2
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
2月前
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
244 0
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
3月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
179 3
|
4月前
|
JSON 小程序 UED
微信小程序 app.json 配置文件解析与应用
本文介绍了微信小程序中 `app.json` 配置文件的详细
711 12
|
5月前
|
XML 移动开发 开发者
京东商品详情数据接口(H5、APP 端)
京东商品详情数据接口是为H5和APP开发者提供的工具,支持获取商品名称、价格、库存、销量、评价、图片等详细信息,优化应用功能。接口返回JSON或XML格式数据,方便解析处理。适用于电商导购、社交媒体分享、活动推广、价格监控等场景,提升用户体验和购物决策效率。示例代码展示了使用Python发送GET请求的方法。
|
4月前
|
移动开发 JSON API
1688 商品详情数据接口(H5、APP 端)
1688商品详情数据接口是1688平台提供的数据交互通道,支持H5和APP端,提供商品的全面信息(如标题、价格、库存、销量等),并实时更新。开发者可通过HTTP/HTTPS协议调用接口,使用GET或POST方法获取数据。示例代码展示了如何用Python请求该接口,需替换API密钥和商品ID。
|
5月前
|
移动开发 小程序 前端开发
使用php开发圈子系统特点,如何获取圈子系统源码,社交圈子运营以及圈子系统的功能特点,圈子系统,允许二开,免费源码,APP 小程序 H5
开发一个圈子系统(也称为社交网络或社群系统)可以是一个复杂但非常有趣的项目。以下是一些关键特点和步骤,帮助你理解如何开发、获取源码以及运营一个圈子系统。
265 4
|
4月前
|
移动开发 小程序
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
thinkphp+uniapp开发的多端商城系统源码/H5/小程序/APP支持DIY模板直播分销
126 0

热门文章

最新文章