跳转App:wx-open-launch-app

以下是实际开发中实现并上架验证过的,但做之前需要你了解对接微信开放文档

以下主要解决难点注意点:

  1. 请求后台 返回wx.config所需配置
  2. 对接weixin4j时需要多引入一个依赖
  3. 属性配置文件中不用的也必须写上
  4. 获取临时票据,需要你的url已经在微信JS接口安全域名下
  5. 微信开放标签 wx-open-launch-app的使用,只有在微信中才显示
  6. 把参数赋值给标签的extinfo属性,微信官网并没有给出赋值方式,这里是解析了解这个开放标签的结构后,进行的赋值操作。
  7. app端不做赘述,需要你自己根据Android 、iOS、Flutter端等对接接收,依旧可以参考此处开放文档
    App侧获取开放标签传递的 extinfo 数据
    请确保已经按照上述步骤接入 OpenSDK 并验证成功接入

前端需要的准备

<!-- 第一步换取配置信息 -->
<script>// 请求后台 返回wx.config所需配置$.ajax({url: "/rest/open/app/config",type: "POST",data: {url:window.location.href},async: false,dataType:'json',success: function (data) {wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印appId: data.appId, // 必填,公众号的唯一标识timestamp:data.timestamp, // 必填,生成签名的时间戳nonceStr: data.nonceStr, // 必填,生成签名的随机串signature: data.signature,// 必填,签名jsApiList: ['chooseImage'], // 必填,需要使用的JS接口列表openTagList: ['wx-open-launch-app'] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app'] 打开app});}});wx.ready(function() {wx.checkJsApi({jsApiList: ['wx-open-launch-app'], // 需要检测的JS接口列表,所有JS接口列表见附录2,success: function (res) {},fail: (err) => {console.log("微信繁忙,请稍后再试");}})});wx.error(function (err) {console.log("微信繁忙,请稍后再试");});</script><!-- 第二步 判断是在什么浏览器打开 --><script>let getMobelType = GetMobelType();function  GetMobelType()  {let  browser  =   {versions:   function()  {let  u  =  window.navigator.userAgent;return  {trident:  u.indexOf('Trident')  >  -1, //IE内核presto:  u.indexOf('Presto')  >  -1, //opera内核Alipay:  u.indexOf('Alipay')  >  -1, //支付宝webKit:  u.indexOf('AppleWebKit')  >  -1, //苹果、谷歌内核gecko:  u.indexOf('Gecko')  >  -1  &&  u.indexOf('KHTML')  ==  -1, //火狐内核mobile:  !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端ios:  !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端android:  u.indexOf('Android')  >  -1  ||  u.indexOf('Linux')  >  -1, //android终端或者uc浏览器iPhone:  u.indexOf('iPhone')  >  -1  ||  u.indexOf('Mac')  >  -1, //是否为iPhone或者安卓QQ浏览器//iPhone: u.match(/iphone|ipod|ipad/),//iPad:  u.indexOf('iPad')  >  -1, //是否为iPadwebApp:  u.indexOf('Safari')  ==  -1, //是否为web应用程序,没有头部与底部weixin:  u.indexOf('MicroMessenger')  >  -1, //是否为微信浏览器qq: u.match(/\sQQ/i) !== null, //是否QQSafari:  u.indexOf('Safari')  >  -1,///Safari浏览器,};}()};return  browser.versions;}
</script>
<!-- 第三步 获取点开的url路径 截取参数,比如获取 商品id,再把商品id赋值给微信标签中的extinfo属性传给app,app端接收到后跳转到对应商品页 -->
<script>let tempParam = window.location.search;let theRequest = {};if (tempParam.indexOf("?") !== -1) {let str = tempParam.substr(1);strs = str.split("&");for(let i = 0; i < strs.length; i ++) {theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);}}let productId = theRequest["product_id"];//alert(productId);document.getElementById("launch-btn").attributes.getNamedItem("extinfo").nodeValue = productId;</script><!-- wx-open-launch-app 微信
标签, extinfo 要传的参数 appid 要唤醒的appid -->
<main><div class="weixinStyle"><wx-open-launch-app id="launch-btn" appid="wx123xxxxxxxxxxx" extinfo="-1"><script type="text/wxtag-template"><button style="color: white;width: 162px;height: 50px;background-color: #FF286F;border-radius: 28px;border: none;font-size: 18px;">APP内打开</button></script></wx-open-launch-app></div>
</main>

后端需要的准备

这里引用weixin4j 获取微信配置

注:单纯的引入weixin4j-spring-boot-starter
使用时会报错确实xx,后来加了作者好友询问后了解的官方并没有写,这里需要多引入weixin4j这个依赖

第一步

<dependency><groupId>org.weixin4j.spring.boot</groupId><artifactId>weixin4j-spring-boot-starter</artifactId><version>2.0.0</version></dependency><dependency><groupId>org.weixin4j</groupId><artifactId>weixin4j</artifactId><version>0.1.6</version></dependency>

第二步

#公众号配置
weixin4j.config.appid=wxxxxxxxxxxxxxxxxxxxxxx
weixin4j.config.secret=0axxxxxxxxxxxxxxxxxxxxx#商户配置(即使不用也得把属性加上,没办法2.0.0支持支付组件)
weixin4j.payConfig.mchId=
weixin4j.payConfig.mchKey=
weixin4j.payConfig.certPath=
weixin4j.payConfig.certSecret=

第三步

@RestController
public class WXOpenAppController {@Resourceprivate WeixinTemplate weixinTemplate;@RequestMapping(value = "/rest/open/app/config", method = RequestMethod.POST)public Map<String, String> wxConfig2(HttpServletRequest request, @RequestParam Map<String, Object> params) throws WeixinException {/**   jsapi_ticket 调用js的临时票据  通过access_token来获取noncestr     生成签名的随机串timestamp    时间戳*   signature    签名1.先获取 access_token2.通过 access_token 请求 jsapi_ticket* */Map<String, String> ret = new HashMap<>();Ticket jsApiTicket = weixinTemplate.getJsApiTicket();String url = (String) params.get("url");// 随机字符串String nonce_str = UUID.randomUUID().toString();// 时间戳String timestamp = Long.toString(System.currentTimeMillis() / 1000);// 签名String signature = SignUtil.getSignature(jsApiTicket.getTicket(), nonce_str, timestamp, url);// appIdString appId = weixinTemplate.getAppId();ret.put("url", url);ret.put("nonceStr", nonce_str);ret.put("timestamp", timestamp);ret.put("signature", signature);ret.put("appId", appId);return ret;}
}

微信内部跳转App:wx-open-launch-app相关推荐

  1. 模拟微信内部跳转至微信支付

    模拟微信内部跳转至微信支付 前言 微信支付步骤介绍 具体代码 前言 微信支付比支付宝或者其它方式要来的更复杂一些,但在我这个项目中,大部分的工作量后台都帮我处理好了,实际上只需要调用两个接口,weCh ...

  2. 微信直接跳转到手机默认浏览器下载APP的实现方式

    很多朋友的APP推广链接需要在微信中进行的网页宣传.传播.下载等等,但是各位朋友一定发现了微信中是屏蔽掉了APP的下载链接的.但是微信最为一个最大的社交平台,为了自身的利益,屏蔽掉了所有APK的下载链 ...

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

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

  4. h5-浏览器点击跳转微信小程序或微信内部广告页(微信浏览器)跳转小程序的实现方法。

    一.微信内部浏览器使用<微信开放标签>唤起微信小程序 官方开发文档:[https://developers.weixin.qq.com/miniprogram/dev/framework/ ...

  5. [微信小程序开发] 用wx.navigateTo方法跳转到tabBar中被定义了的页面将无法跳转

    [微信小程序开发] 用wx.navigateTo方法跳转到tabBar中被定义了的页面将无法跳转 举例: main.js中: tabBar中 定义了页面"pages/test/main&qu ...

  6. ios微信组件跳转_IOS如何从微信中跳转APP

    如果不考虑屏蔽,跳转APP的方式主要有: url scheme 这是一种ios与Android都支持的叫做schema的协议.至于具体怎么设置,交给IOS或者安卓开发人员吧. 这种方式在除微信外的大部 ...

  7. ios微信组件跳转_在iOS9中突破微信App跳转的限制

    前言 微信的普及程度相信不需要多言了,稍微回忆一下自己上一条短信是什么时候,上一条微信又是什么时候就知道了. 因此通过微信传播也是绝大部分App的一个重要手段,但是在iOS7微信出的新版本,就开始不允 ...

  8. 微信链接跳转浏览器 H5实现APP下载功能实现方法

    由于微信的限制,应用文件在内置浏览器中下载全部被屏蔽掉,造成很多人用微信扫描二维码下载时点击下载按钮没反应,我想到的是做一个提示用户在浏览器中打开下载. 可以参考:微信打开网址添加在浏览器中打开提示  ...

  9. 微信链接跳转浏览器实现微信中直接下载棋牌游戏类APP功能

    需求分析 在微信的使用率已经高居各社交APP榜首的同时,微信成为了我国移动流量最大的平台之一.在此趋势的引导下,很多的商家.个体户便抓住了这一机遇,利用微信这个渠道来做产品的推广.以及营销方案宣传.但 ...

最新文章

  1. 如何优雅的使用 phpStorm 开发工具
  2. Android多线程断点下载
  3. USACO 1.0_Friday the Thirteenth
  4. Tensorflow 2.3 GPU安装
  5. matlab模糊控制工具箱使用和模糊控制pid实例参考
  6. 1082 Read Number in Chinese (25 分)【难 / 模拟 字符串】
  7. Css3系列-新属性新布局
  8. [商业]文件文件夹对比合并工具Araxis Merge
  9. 乘法最快的算法计算机,人类史上最快乘法算法诞生
  10. Java中BigDecimal的8种舍入模式
  11. TCP TIME_WAIT 详解
  12. 数据相关,资源相关,控制相关的解决方法
  13. android socket 代理服务器,Android 使用Socket进行服务器通信
  14. SNPE安装+Qualcomm高通AI神经网络处理SDK部署流程
  15. 017-Centos7.6+CDH 6.2 安装和使用
  16. python常用函数年初大总结
  17. vue 2.0 使用 Font Awesome
  18. JWPlayer快速入门指南(中文)
  19. ip 华三secondary_H3C交换机配置端口IP sub实例
  20. 常见Http Method有哪些

热门文章

  1. 通用开户流程及测试重点
  2. 台达变频器vfb—d参数表_台达变频器参数设置一览表
  3. 【文献阅读】PQA——感知问答的数据集和方法(Y. Qi等人,CVPR,2021)
  4. 每日一题【49】导数-放缩法处理恒成立问题
  5. scheme心得(1) continuation与阴阳谜题
  6. 代码评审平台 phabricator-docker/phabricator docker 服务搭建及配置
  7. 优雅的操作张量维度(rearrange)和便携式矩阵乘法(einsum )
  8. java如何输入2的31次方_续一: 如何优化Java程序:十进制转十六进制(2的31次方以内的正整数)...
  9. 计算机毕业设计选题推荐springboot+vue教师评教系统 ssm学生评教系统 教学质量评价系统 ssm教学评价系统 教师评价系统java
  10. 9WPF---图形变换与渲染