JSSDK与项目刷新问题?

作者站长头像
站长
· 阅读数 6

在项目首页的onShow中注册JSSDK的时候把当前域名存入本地:判断当前域名和本地存储的域名是否一致时再进行JSSDk注册,当微信公众号网页版项目某一页刷新会影响JSSDK吗?(刷新之后进不去wx.ready和wx.error)

回复
1个回答
avatar
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里面,并且不加条件判断(有些人有些时候用电脑打开,发现会空白,不知道是不是这里的影响)answer image

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容