最近在做uniapp项目H5端微信分享的时候遇到了几个疑难杂症,在网上找问题都没看到有响应的问题,特此记录一下,比较常见的问题可参考微信开发文档
问题1:wx.config注册成功,wx.ready执行成功,在开发者工具上面控制台也能看到打印好的日志,结果在ios真机上面微信分享失败。
原因之一:vue在ios微信浏览器中跳转路由会重定向!也就是说在真机中去获取签名的url是跳转之前的路径,比如从主页/home跳转到商品详情/productDetails, 在商品详情页我们一般直接用 location.href.split('#')[0]获取当前页面,在IOS微信浏览器可能会获取第一次进来的路径home!这就是为什么在本地调试没问题,真机上会有问题
解决方法:
watch: {
"$route"(newVal, oldVal){
// 针对商品详情在微信里路径重定向问题优化 前面的路径判断方法由自己定(为了防止无限刷新)
if (!oldVal.fullPath.includes('productDetails') && newVal.fullPath.includes('productDetails') && /iPhone|mac|iPod|iPad/i.test(navigator.userAgent)) {
window.location.href = `${window.location.origin}/unimallf${this.$route.fullPath}`
}
},
},
问题2:重定向问题ok,微信签名获取ok,注册接口ok,但真机分享的时候还是失败
原因:获取微信签名接口入参的url是当前页面的链接例如“www.baidu.com”,但是分享出去的链接新拼接了参数"www.baidu.com?userId=1234546";由于做的商城项目,分享出的链接要带上登录人的userId,然后而在请求微信签名的时候URL没有携带,在微信分享wx.ready的参数link后面拼接了参数,导致分享失败!
解决方法:在请求微信签名的时候就要把完整分享的链接拼接好,与wx.ready的参数link保持一致
如果对大家有帮助的话,可以点赞收藏评论三连。更多踩坑后续待完善......