微信公众号分享功能,安卓成功,ios出现签名错误。区别在于发送给后台做验证的url不同,安卓需要发送当前页面的url,ios需要发送进入的第一个页面的url,所以需要将第一个页面的url保存起来
我的第一个页面是index.vue,添加路由守卫
beforeRouteEnter (to, from, next) {
let userAgent = navigator.userAgent
if (userAgent.includes('iPhone') || userAgent.includes('iPad')) {
sessionStorage.setItem('originUrl', location.href) // 用于ios分享
}
next()
},
在需要用到的分享的地方调用share函数
// 分享
async share () {
let userAgent = navigator.userAgent
let url = ''
if (userAgent.includes('iPhone') || userAgent.includes('iPad')) {
url = sessionStorage.getItem('originUrl')
}
else {
url = location.href
}
let data = await app.request(api.wechatJssdk, {url: url})
if (data.code === 1) {
let parmas = data.data.data
wx.config({
debug: false,
appId: parmas.appId,
timestamp: parmas.timestamp,
nonceStr: parmas.nonceStr,
signature: parmas.signature,
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'onMenuShareTimeline', 'onMenuShareAppMessage']
})
wx.ready(() => {
let obj = {
title: '',
desc: '',
link: '',
imgUrl: '',
success: () => {
}
}
// 新api,不会有分享成功的回调,success只是设置成功回调
// wx.updateAppMessageShareData(obj)
// wx.updateTimelineShareData(obj)
// 旧api,即将废弃
wx.onMenuShareTimeline(obj)
wx.onMenuShareAppMessage(obj)
})
}
},