微信公众号h5页面跳转小程序开发踩坑

前言:网上搜这个问题  很多答案都是  wx.navigateToMiniProgram(Object object)   我只想说  我搜的是h5跳转小程序  这帮人给的答案都是小程序跳小程序  我服了

微信公众号h5页面跳转小程序开发踩坑

正式开始:

1.目录 | 微信开放文档   打开这个网址  我们要使用的是  开放标签

2.文档很清楚了  走 微信jssdk   

微信公众号h5页面跳转小程序开发踩坑

核心就是这里  还是类似微信jssdk  分享或者扫一扫这种  走验证签名 的流程 

这里需要注意的几个细节点

a.  jsApiList  的数组里 建议还是写一个验证js接口  虽然 我们不用  不过有文章说这里需要写一个

b. openTagList  里要放我们要使用的开放标签      weapp是跳转小程序   app 是跳转app的

微信公众号h5页面跳转小程序开发踩坑

c.页面细节处理    

如果你没有使用vue的框架  那么可以使用template标签 那么  按照下面 官网的例子就可以了  

<wx-open-launch-weapp
  id="launch-btn"
  username="gh_xxxxxxxx"
  path="pages/home/index.html?user=123&action=abc"
>
  <template>
    <style>.btn { padding: 12px }</style>
    <button class="btn">打开小程序</button>
  </template>
</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>
App跳转按钮:

如果你使用了vue的框架  例如  我使用了uniapp的框架  那么template标签就会起冲突 这个时候 就需要换个写法   要用script 标签 type注意用text/wxtag-template  并且 因为 这个插槽 是与外界隔离的 所以 css 要写在标签里 可以用style标签 也可以像我一样 直接写style即可

微信公众号h5页面跳转小程序开发踩坑

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<title></title>
		<script src="https://res.wx.qq.com/open/js/jweixin-1.6.0.js"></script>
	</head>
	<body>
		测试页面
		<wx-open-launch-app
		  id="launch-btn1"
		  appid="xxxxxxxxx"
		  extinfo="name=gq&age=123"
		>
		  <script type="text/wxtag-template">
		    <style>.btn { padding: 12px }</style>
		    <button class="btn">App内查看</button>
		  </script>
		</wx-open-launch-app>
		
		<wx-open-launch-weapp
		  id="xxxxxxxxx"
		  username="xxxxxx"
		  path="page/my/login/login"
		>
		  <script type="text/wxtag-template">
		    <style>.btn { padding: 12px }</style>
		    <button class="btn">打开小程序</button>
		  </script>
		</wx-open-launch-weapp>

	</body>
	<script src="./vconsole.js"></script>
	<script src="./jquery.js"></script>
	<script>
	new VConsole()
	$.get("https://xxxxxxxxxx",{url:location.href},function(data,status){
	        console.info(data)
			var obj = data.obj
			wx.config({
			  debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印
			  appId: 'xxxxxxxxx', // 必填,公众号的唯一标识
			  timestamp: obj.timestamp, // 必填,生成签名的时间戳
			  nonceStr: obj.nonceStr, // 必填,生成签名的随机串
			  signature: obj.signature,// 必填,签名
			  jsApiList: [
				  'onMenuShareTimeline'
			  ], // 必填,需要使用的JS接口列表
			  openTagList: [
				  'wx-open-launch-app',
				  'wx-open-launch-weapp'
			  ] // 可选,需要使用的开放标签列表,例如['wx-open-launch-app']
			});
	    });
	
	  var btn = document.getElementById('launch-btn1');
	  btn.addEventListener('launch', function (e) {
	    console.log('success app');
	  });
	  btn.addEventListener('error', function (e) {
	    console.log('fail app', e.detail);
	  });
	  var btn2 = document.getElementById('launch-btn2');
	  btn2.addEventListener('launch', function (e) {
	    console.log('success 小程序');
	  });
	  btn2.addEventListener('error', function (e) {
	    console.log('fail 小程序', e.detail);
	  });
	</script>
</html>

最后 告诉几个 你可能会遇到的问题

1.h5页面是要公司且认证过的  然后h5的页面 要是在h5后台的安全域名里

2.小程序也是要公司认证过的 然后h5的页面 也是要配置在小程序里安全域名里 具体叫什么我忘记了

3.开放标签的 username属性 要用小程序的原始id 就是gh开头的 很好找到

4.path的路径 尽管小程序

1. 开放标签的 username属性 要用小程序原始id

上一篇:BootStrap 按钮和按钮组


下一篇:主窗口打开子窗口,通过子窗口执行后面的代码