业务场景
项目中用的是uniapp开发H5网页,在网页中调用微信的扫一扫功能,就使用微信的JSSDK,安卓手机扫码没一点问题,但是用苹果手机一到调用微信扫一扫的页面,就会报签名失效问题,如下图所示
安卓手机没有任何问题,苹果手机签名失效,微信扫一扫的功能也不能调用,因为生成签名的时候要把当前的路由地址发送给后端,但是在ios系统和安卓系统生成的路由地址不一样,导致ios系统每次会签名失效,
解决办法
在app.vue中加上这段代码,进到页面就获取一下当前的路由地址
mounted() {
uni.setStorage({
key: 'WxCodeUrl',
data: location.href
});
}
然后在每个页面调用的时候去判断一下是否为ios系统
getUrl() {
var signLink = ''
var ua = navigator.userAgent.toLowerCase();
if (/iphone|ipad|ipod/.test(ua)) {
signLink = uni.getStorageSync('WxCodeUrl');
if (!signLink) signLink = location.href
} else {
signLink = location.href
}
return signLink;
}
然后把上面返回的url传给后端就可以了,如果大家有什么简单的办法,可以一起讨论留言