官方文档:

开放标签说明:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_Open_Tag.html

配置说明:https://developers.weixin.qq.com/doc/oplatform/Mobile_App/WeChat_H5_Launch_APP.html

app获取开放标签中的extinfo数据:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/APP_GET_EXTINF.html--此次没用到

一、需求背景

期望分享链接自动唤起app(若应用安装应用的用户)

二、准备工作

1、环境要求

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

2、微信后台配置

a、将MP_verify_f4VWFoFpHgzmqFbo.txt文件下载并放到项目的根目录下(域名的根目录下)

b、公众号管理平台:配置该公众号下js的安全域名

c、在微信开放平台将js安全域名与app进行关联

3、跳转app的H5页面接入微信JS-SDK

方式一:sdk--http://res2.wx.qq.com/open/js/jweixin-1.6.0.js (支持https)

方式二:npm install weixin-js-sdk --save(目前使用的方式)

三、业务功能实现

1、关键代码

<template>
   <div>
      <wx-open-launch-app
       @launch="launch"

@error="launchError"

id="launch-btn"
       appid="移动应用APP的 APPid"
       extinfo="H5传给APP的参数(可用于跳转指定页面)"

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

</script>

import wx from "weixin-js-sdk";
export default {
   methods: {

launch() {
       window.location.href =app提供的 scheme url;
       setTimeout(() => {
            window.location.href = appDownUrl;
       }, 1000);
},
launchError(e) {
     if (e.detail.errMsg === "launch:fail") {
        window.location.href = appDownUrl;

}
}

},

created() {

wx.config({

     debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印appId: '', // 必填,公众号的唯一标识timestamp: , // 必填,生成签名的时间戳nonceStr: '', // 必填,生成签名的随机串signature: '',// 必填,签名jsApiList: ["onMenuShareTimeline", "onMenuShareAppMessage"], // 必填,需要使用的JS接口列表openTagList: ["wx-open-launch-app"] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']});

}
};
</script>

config配置成功会展示:{"errMsg":"config:ok"}

注:

1、对于Vue等视图框架,为了避免template标签冲突的问题,可使用<script type="text/wxtag-template"><script>进行代替

2、wx.ready()方法在config信息验证后不论成功或失败都会调用。失败的情况下,先调用error方法,然后再调用ready方法。

3、在开放标签中,<template>或者<script>里面的写样式,千万不要使用定位position,如果非要用就在最外层的div里面写

4、vue编译过程中无法识别标签wx-open-launch-app,可以在main.js中设置:

Vue.config.ignoredElements = ["wx-open-launch-app"];

5、extinfo 内填的是传递给唤起 app 的数据;

遇到的问题:

1、在ios分享到微信的页面跳转后调用微信js-sdk时报错:"invalid signature",重新刷新页面,显示config:ok。

分析(借用):从A页面跳转到B页面时,由于是使用vue-router切换,都是操作浏览器历史记录,所以ios端微信浏览器锁定的url的还是A页面的url。这样就会导致请求的url签名地址和浏览器执行weixin-js-sdk时锁定的地址不一致。
你当前请求的可能是url1或url2,而此时微信锁定的地址仍然是进入A页面时的url(因为在进入A页面是加载并执行了jweixin-1.x.x.js, 而路由变化A到B时,并没有再次执行jxinwei-1.x.x.js)。所以问题就发生了,但是你再刷新一下,

jweixin-1.x.x.js重新执行,此时微信浏览器锁定的url就是你当前刷新的url地址了,所以签名又成功了。

主要是因为:

【IOS】:ios微信端,路由变化时,微信认为SPA的url是不变的。
【Android】:android微信端,路由变化时,SPA的url是会变的(官方在安卓6.2版本,才对SPA变化作了支持)

所以,发起签名的url必须是微信锁定的url。

解决方案:

IOS端,在可能发生跳转的所有页面,把请求签名的url,保存到全局变量中。路由切换后,在调用分享接口时,使用全局变量里保存的url来请求签名

附上代码:

mounted() {
     if (isIOS && (typeof window.entryUrl === "undefined" || window.entryUrl === "")) {
          window.entryUrl = location.href.split("#")[0];
     }

}

2、安卓手机中使用微信开放标签唤醒APP,在APP已打开在后台运行的时候能唤醒APP,杀掉进程之后无法唤醒App

官方回答:对于拉起应用还没适配Android10限制后台拉起Activity的问题(亲测不止Android10,Android8也不行)

解决方式:

App杀掉的情况下在小程序中唤醒App时可以打印出日志,说明在App中微信的回调是正常的,只是没有打开App而已,目前是在app的微信回调onReq()中手动唤起app

四、其他工具

微信 JS 接口签名校验工具:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign

微信H5链接唤起三方App总结相关推荐

  1. 怎样降低微信h5棋牌游戏类app域名被微信拦截封杀屏蔽的几率

    微信h5棋牌游戏类app域名被微信拦截封杀屏蔽 域名被微信封杀,显示的是链接无法访问. 域名被微信拦截是跟淘宝一样一般提示"如需浏览,请长按网址复制后使用浏览器访问".域名被微信屏 ...

  2. 微信分享和微信H5跳转到APP开放标签wx-open-launch-app使用及样式设置

    H5.微信.App唤端相关 一.微信分享 二.浏览器H5跳转到APP 三.微信H5跳转到APP 一.条件说明 二.文档 三.重要的设置 四.注意点 五.样式设置 一.微信分享 参看:微信分享:后端参数 ...

  3. H5页面唤起指定app或跳转到应用市场(扫描二维码直接下载APP)

    场景1: 在 h5 页面上,不管用户是否安装过该app,都直接跳转到应用市场,让用户从应用市场上打开app. 思路: 这种场景处理比较简单,直接判断判断是android端还是ios端,然后在点击按钮上 ...

  4. 微信H5支付跳回app的问题

    最近使用到H5支付,需要在支付完成或者取消之后跳回到app.但是苹果做好H5支付只会跳转到Safair浏览器,这就需要找方法去解决了. 1.首先先配置微信支付的白名单. 在Xcode中,在plist文 ...

  5. 微信H5棋牌类及app类推广链接在微信推广中遇到的问题讨论

    市场情势分析 微信在审核第三方推广链接的时候管控是越来越严格了,如果访问量过大,推广效果稍微好一些,自己的网址域名可能就会被封杀,用户打不开,造成页面流量的损失和客户的流失. 先看代码: $url = ...

  6. 有谁会H5京东链接唤起京东app

    紧急需要,会搞定的私信我,有偿

  7. 微信H5网页唤起 跳转APP

  8. vue H5页面唤起手机app(iOS和Android),没有安装则跳转下载页面

    现在好多的app应用都有对应的h5页面,那么h5和app直接是如何交互的呢? 这里使用的是Scheme协议. 什么是URL Scheme? android中的scheme是一种页面内跳转协议,是一种非 ...

  9. 如何通过发送短信唤起三方app?

    现在一年的时间有很多购物节,那么商家如何快速有效的讲用户引流到自家平台上来呢? 我们以淘宝和抖音平台进行分析,说一下这个唤起方式. 目前,互亿无线短链功能支持直接跳转到淘宝APP.天猫APP的如下频道 ...

  10. 钉钉分享唤起三方app

    一.IOS ios的浏览器唤起app的方式一般有两种,url schema和universal link两种方式,universal link适合ios9+以后的系统.测试过钉钉app内置的浏览器,u ...

最新文章

  1. SQL Server 删除重复记录,只保留一条记录
  2. 第41周星期四及Spring学习小结
  3. BackTrack5 (BT5)无线password破解教程之WPA/WPA2-PSK型无线password破解
  4. No module named 'pandas.core.internals.managers'; 'pandas.core.internals' is not a package
  5. win7重装系统后设置Python2.7环境
  6. Zend Studio 实用快捷键一览表
  7. 用c++自制词法分析器_编译原理笔记 02 词法分析
  8. 手把手教你解密MacOS平台下的Chrome密码
  9. LeetCode 445. Add Two Numbers II
  10. 我的KT库之-----缓存与配置
  11. 【渝粤教育】电大中专测量学 (4)作业 题库
  12. hmcl手机版_hmcl启动器手机版下载-hmcl启动器官方正版下载v3.3.172-1y2y游戏
  13. CE教程第八步之多级指针
  14. Dubbo服务调用流程源码分析(服务调提供方)
  15. linux 防DDOS防火墙脚本
  16. Python:SM4
  17. Linux开发工具3
  18. 【视频分析】大规模机器学习在爱奇艺视频分析理解中的实践
  19. HQChart使用教程30-K线图如何对接第3方数据20-信息地雷公告数据
  20. 【万人千题】社区,算法零基础抱团养成,我命由我不由天

热门文章

  1. 从“NVIDIA禁令”看如何正确选择NVIDIA GPU卡
  2. 终于!疫情之下,第一批企业没能熬住面临倒闭,员工被遣散,没能等来春暖花开!
  3. “用户体验不是把每个环节做到极致,而是在关键环节打动用户“这句话对吗?...
  4. 华农计算机学院院长,中国计算机学会“CCF走进高校”走进华农
  5. 研究生学习生活日记——第二次组会
  6. HNOI 2015 落忆枫音 题解
  7. c语言容斥原理求素数,容斥定理相关题目讲解
  8. 小水智能-智能楼宇智慧建筑3D可视化系统,实现对实时数据的整合处理
  9. 苹果将数据转存至中国服务器 或威胁国内信息安全
  10. 遥感应用中影像最佳波段组合分析详细过程