JSSDK与项目刷新问题?
在项目首页的onShow中注册JSSDK的时候把当前域名存入本地:判断当前域名和本地存储的域名是否一致时再进行JSSDk注册,当微信公众号网页版项目某一页刷新会影响JSSDK吗?(刷新之后进不去wx.ready和wx.error)
回复
1个回答
test
2024-07-03
1、全局注册JSSDK,在首页的onShow()中设置
//全局注册url,为sdk做准备
let url = window.location.href.split('#')[0];
let oldUrl = uni.getStorageSync('locationUrl');
if (url != oldUrl) {
//判断之前有没有注册
uni.setStorageSync('locationUrl', url);
uni.setStorageSync('scanRefresh', false);
this.handleReject();
}
2、handleReject方法代码如下:
handleReject() {
let url = window.location.href.split('#')[0];
let vm = this;
let data = {
url: url,
};
Http.getSignature(data).then((res) => {
jweixin.config({
debug: false,
appId: vm.appId,
timestamp: res.data.timestamp,
nonceStr: res.data.noncestr,
signature: res.data.signature,
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData', 'scanQRCode'],
});
});
},
3、在某详情页自定义分享内容,代码如下:
jweixin.ready(function () {
//自定义“分享到朋友圈”及“分享到 QQ 空间”按钮的分享内容(1.4.0)
jweixin.updateTimelineShareData({
desc: vm.tipTxt,
title: vm.videoDetail.videoName, // 分享标题
link: vm.stareUrl, // 分享链接,该链接域名或路径必须与当前页面对应的公众号 JS 安全域名一致
imgUrl: '', // 分享图标
success: function () {
// 设置成功
},
});
//自定义“分享给朋友”及“分享到QQ”按钮的分享内容(1.4.0)
jweixin.updateAppMessageShareData({
desc: vm.tipTxt,
title: vm.videoDetail.videoName,
link: vm.stareUrl,
imgUrl: '', // 分享图标
success: function () {
},
});
});
jweixin.error((e) => {
console.log('注册失败', e);
});
4、场景:刷新页面 操作:调用分享发送给朋友 问题:自定义分享内容没显示, 解析:既没有进去jweixin.ready,也没有进去jweixin.error,说明现在JSSDK处于未注册状态,这时当前页面域名跟本地存储locationUrl一样,不会触发重新注册JSSDk 解决方案:把全局注册代码放在App.vue文件的onShow里面,并且不加条件判断(有些人有些时候用电脑打开,发现会空白,不知道是不是这里的影响)
回复
适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容