微信公眾號二次分享ios分享失敗問題


一、首先,看正常通用的

1、綁定域名

  再公眾號開發設置里邊配置域名

2、引入js文件

index.html

 <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js "></script>

3、通過后台處理調用接口得到簽名

 

這里通過添加路由守衛 判斷 ios系統時 保存第一次進入時的鏈接地址(iso分享失敗原因:因為ios獲取簽名傳參的url永遠是你進入這個項目的第一個url,不訪你可以點擊上角刷新試試)
beforeRouteEnter(to, from, next) { let userAgent = navigator.userAgent; if (userAgent.includes("iPhone") || userAgent.includes("iPad")) { sessionStorage.setItem("originUrl", location.href); // 用於ios分享 } next(); },

此處也有一個坑:
beforeRouteEnter:這個是組件內的守衛,看你寫在哪個頁面了,此處的重點是你得想辦法保存剛進入這個項目的第一個url
 
        

 

 

 sendShare() {
      // this.reload();
      this.common.tip("點擊右上角完成分享");
      var timestamp = "";
      var nonceStr = "";
      var signature = "";
      let urls = "";
    // 這個判斷是處理ios分享失效的問題 let userAgent
= navigator.userAgent; if (userAgent.includes("iPhone") || userAgent.includes("iPad")) { urls = sessionStorage.getItem("originUrl"); } else { urls = window.location.href; }
    // 這兒的調接口方法是自己封裝的
this.http.getRequest(apis.getSignature_url, { urls: urls // 注意注意注意:這里的路徑必須是當前頁面路徑,並且必須和公眾號里邊配置的域名保持一致,否則會簽名失效(再ios中,這里的路徑必須是剛進入這個項目的第一個url,否則獲取簽名失效) }).then(res => { console.log(res, "res"); timestamp = res.timestamp; nonceStr = res.nonceStr; signature = res.signature;

      通過config接口注入權限驗證配置


          wx.config({
            debug: false, // 開啟調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時才會打印。
            appId: "wxfbf80fe01e7999a8", // 必填,公眾號的唯一標識,填自己的!
            timestamp: timestamp, // 必填,生成簽名的時間戳,剛才接口拿到的數據
            nonceStr: nonceStr, // 必填,生成簽名的隨機串
            signature: signature, // 必填,簽名,見附錄1
            jsApiList: ["updateAppMessageShareData", "onMenuShareTimeline"], // 權限導入
          });
          var url_link = apis.sharUrl + "/index?activityPlanId=" +this.activityPlanId + "&accountId=" + this.accountId;

      通過ready接口處理成功驗證


          wx.ready(() => {
            //需在用戶可能點擊分享按鈕前就先調用
            // 分享給朋友

            wx.updateAppMessageShareData({
              title: this.data.title, // 分享標題
              desc: this.data.introduce, // 分享描述
              link: url_link, // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公眾號JS安全域名一致
              imgUrl: this.logo, // 分享圖標, 此圖標也要以http開頭的路徑
              success: function() {
                // 設置成功
              }
            });
       

      通過error接口處理失敗驗證


            wx.error(function(res) {
              // config信息驗證失敗會執行error函數,如簽名過期導致驗證失敗,具體錯誤信息可以打開config的debug模式查看,也可以在返回的res參數中查看,對於SPA可以在這里更新簽名。
            });
          });
          // =================
        });
    },

參考:https://www.cnblogs.com/zishang91/p/10755488.html

https://blog.csdn.net/sinat_33184880/article/details/90240567


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM