微信公众号调取jssdk扫一扫功能,ios第一次进入页面调取失败(需刷新页面才能调取成功,Android正常)的解决方法

注意:ios第一次进入页面调取失败的原因主要在于传入的path路径
const data = {
url:encodeURIComponent(location.href.split(’#’)[0]),
}

看了一些博客,说是url要用encodeURIComponent进行编码,后台解码就可以解决问题,但是对我用了还是不能解决,于是我又找了其它方法
用路由守卫解决了问题,说白了就是每次切换页面的时候都去重新config
但是因为安卓手机上没有问题,我就区分了安卓和ios的写法:
let u = navigator.userAgent, app = navigator.appVersion;
let isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端
if (isIOS) {
// 全局路由守卫
router.beforeEach((to, from, next) => {
const data = {
url: encodeURIComponent((location.href.split(’#’)[0])),
appType: sessionStorage.getItem(‘appType’)
}
const url = ‘/wx/getJsSdkPermission?’ + qs.stringify(data); //获取签名
http.get({ url, data }, {
success: (data) => {
wx.config({
beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: this,appId, // 必填,企业号的唯一标识,此处填写企业号corpid
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.noncestr, // 必填,生成签名的随机串
signature: data.sign, // 必填,签名,见附录1
jsApiList: [
“checkJsApi”,
“scanQRCode”,
]// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
});
wx.ready(function (data) {
})
}
});
next() // 必须使用 next ,执行效果依赖 next 方法的调用参数
})

}
问题完美解决

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值