【小程序開發(fā)記錄】轉(zhuǎn)發(fā)功能

好記星不如爛筆頭,寫一寫記錄下。

一. 用到的API

轉(zhuǎn)發(fā)功能API參考微信官方,列下常用的
onShareAppMessage(options)
在返回值中設(shè)置轉(zhuǎn)發(fā)的title與頁(yè)面path,會(huì)回調(diào)轉(zhuǎn)發(fā)成功與失敗,js中設(shè)置了這個(gè)膠囊按鍵中才會(huì)出現(xiàn)“轉(zhuǎn)發(fā)”
wx.hideShareMenu(OBJECT)
隱藏膠囊按鍵里面的“轉(zhuǎn)發(fā)”按鈕
wx.showShareMenu(OBJECT)
1.顯示膠囊按鍵里的“轉(zhuǎn)發(fā)”按鈕 2.設(shè)置是否使用帶shareTicket 的轉(zhuǎn)發(fā)(轉(zhuǎn)發(fā)到微信群)
wx.getShareInfo(OBJECT)
拿shareTicket 獲取微信群的信息

二. 實(shí)現(xiàn)步驟
  1. 轉(zhuǎn)發(fā)分為頁(yè)面內(nèi)button(只能是button)或右上角膠囊按鍵轉(zhuǎn)發(fā)。后者只要添加了前面提到的第一個(gè)方法就可以了。而頁(yè)面內(nèi)轉(zhuǎn)發(fā)要在wxml里這么加(不需要bindtap,點(diǎn)擊button會(huì)觸發(fā)onShareAppMessage(options)方法
<button class="btnShare" open-type="share"</button>
  1. 在頁(yè)面onShareAppMessage(options)方法調(diào)用前添加
wx.showShareMenu({
  withShareTicket: true
})

withShareTicket參數(shù)是設(shè)置轉(zhuǎn)發(fā)是否攜帶shareTicket。該參數(shù)只有在轉(zhuǎn)發(fā)至群組時(shí)可以獲取到,轉(zhuǎn)發(fā)至單聊時(shí)無(wú)法獲取到shareTicket,有啥用后面說。

  1. 無(wú)論點(diǎn)擊哪種轉(zhuǎn)發(fā)按鍵都會(huì)觸發(fā)onShareAppMessage: function (option),其中參數(shù)option.from可以區(qū)別是頁(yè)面定義button轉(zhuǎn)發(fā)還是膠囊按鍵轉(zhuǎn)發(fā)
onShareAppMessage: function (option) {

      var shareTitle;
      if (option.from === 'button') {
          // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
          shareTitle = '這是來(lái)自button的轉(zhuǎn)發(fā)';
      }else {
          shareTitle = '這是來(lái)自膠囊按鍵的轉(zhuǎn)發(fā)';
      }
      return {
          title: shareTitle,
          path: '/parts/xxx',
          success: function(res) {
              res.shareTickets 
          },
          fail: function(res) {
              console.log(res)
          }
      }
}

在后面的return中設(shè)置好title,path,轉(zhuǎn)發(fā)成功或失敗會(huì)回調(diào)相應(yīng)block

  1. 開發(fā)者將shareTicket傳入到wx.getShareInfo(OBJECT)方法中可以獲取到加密數(shù)據(jù),解密后群組信息(openGId),然后通過gid與開放組件open-data可以讓小程序在微信群中增加不一樣的玩法。shareTicket有兩種獲取方式。
    (1)用戶轉(zhuǎn)發(fā)成功后的block參數(shù)(見上面代碼)。
    (2)用戶收到轉(zhuǎn)發(fā)卡片啟動(dòng)小程序的onLaunch: function(options)或onShow: function(options)方法(見下面代碼)。
    onLaunch: function(opt) {
        //1044轉(zhuǎn)發(fā)場(chǎng)景值
        if (opt.scene == 1044) {
            wx.getShareInfo({
                shareTicket: opt.shareTicket;
                success: function(res){
                    var encryptedData = res.encryptedData;
                    var iv = res.iv;
                }
            })
        }

其中success塊返回值即為加密數(shù)據(jù)。解密算法見微信官方

三. 總結(jié)

需求并沒有增加群組玩法,并沒有過多關(guān)注openGid,后面有機(jī)會(huì)可以試一試,用戶點(diǎn)擊卡片啟動(dòng)小程序時(shí),由于只是分享一個(gè)頁(yè)面,導(dǎo)航層級(jí)會(huì)發(fā)生變化,若不需要獲取shareTicket則可以做一些其他判斷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容