当前位置:   article > 正文

解决uniapp下无法唤起微信公众号H5扫码问题_uniapp jweixin-module ios微信扫码没反应

uniapp jweixin-module ios微信扫码没反应

前言

开发的铁子们应该知道,uniapp是一个支持一套代码多端应用的前端技术栈,但是在一些场景下,也有不足的地方。比如最近业务需求,要求支持H5扫码功能,需求本身很常见,没什么毛病,但是uniapp不支持直接唤起H5扫码功能 需要调用微信的SDK,间接处理一下。

废话不多说,直接上干货,

官方文档说明

微信开发文档地址:

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

操作步骤

步骤一

先下载sdk文件,然后引入 index.js文件 也可以放在components方法里

npm install jweixin-module --save
  • 1

步骤二

调接口返回config配置信息

//在onload 中调用,找后台要接口!!!
var apiUrl = location.href.split("#")[0]
uni.request({
				url: api.api.getJsSdkConfig,
				data: {
					url: apiUrl,//当前页面的域名
					api: ['scanQRCode'],//调用的方法去接口列表里找
				},
				success: function(res) {
					
					var wxData = JSON.parse(res.data.data.config)
					that.wx_sanCode(wxData)
				}
 
			})
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

扫码功能的逻辑

//扫码
			wx_sanCode: function(wxData) {
				wx.config({
					debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
					appId: wxData.appId, // 必填,公众号的唯一标识
					timestamp: wxData.timestamp, // 必填,生成签名的时间戳
					nonceStr: wxData.nonceStr, // 必填,生成签名的随机串
					signature: wxData.signature, // 必填,签名
					jsApiList: wxData.jsApiList // 必填,需要使用的JS接口列表
				})
				wx.ready(function() {
					// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
					wx.checkJsApi({
						jsApiList: ['scanQRCode'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
						success: function(res) {
							console.log('返回信息')
							console.log(res)
							// 以键值对的形式返回,可用的api值true,不可用为false
							// 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
						}
					});
				});
				wx.error(function(res){
				  // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
				console.log(res,'接口验证失败')
				});
 
			}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28

点击事件唤起微信扫码的逻辑

//扫码
			bindsaoQRcode:function(){
				wx.scanQRCode({
				  needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
				  scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
				  success: function (res) {
					  console.log(res);
					  console.log('扫码')
				    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
	                window.location.href = result //安卓机型跳转渲染有问题 所以要加这句
				  }
				});
			},
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

写在最后

我们的业务主要是做广告投放的,跟微信生态圈打交道比较多。以上仅作为一个思路参考,有的技术铁子后续有需要的可以三连加收藏,自己搞副业的时候可能用的上。

好了,今天的内容分享就到这里,简短但是还是比较有用的。更多精彩内容会第一时间发布在“安前码后”公众号,点击下方名片页可以实时订阅。更多实用干货持续输出中,下期再见。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/575790
推荐阅读
相关标签
  

闽ICP备14008679号