微信小程序開發——小程序分享轉發

關於小程序的轉發:html

最簡單的就是點擊小程序右上角菜單「轉發」按鈕直接分享,不過這種分享有點不太友好,實用性也不強。算法

固然,你能夠自定義分享內容,包括標題,簡介,圖片及分享的小程序頁面路徑。json

再高級一點,還能夠對轉發出去的小程序被二次打開的時候獲取到一些信息。小程序

一. 自定義轉發內容:後端

onShareAppMessage(Obj):api

1. 監聽轉發按鈕(button open-type="share")或小程序右上角「轉發」按鈕的點擊行爲;
2. 自定義轉發分享內容。
3. 還能夠監聽這些信息:
 
示例代碼:
  /**
   * 用戶分享自定義
   */
  onShareAppMessage: function(res) {
    return {
      title: '哈根達斯冰激凌5折特惠',
      path: '/pages/index/index?goods_id=' + wx.getStorageSync("goods_id"),
      imageUrl: 'http://static.e-mallchina.com/pic/product/brand/detail/hgds.jpg'//自定義圖片路徑,能夠是本地文件路徑、代碼包文件路徑或者網絡圖片路徑。支持PNG及JPG。顯示圖片長寬比是 5:4。
    }
  }

點擊右上角菜單中的「轉發」按鈕,分享效果以下:網絡

二. 點擊頁面按鈕分享轉發:app

<button> 組件設置 open-type="share"便可實現頁面內分享,點擊按鈕便可跟點擊右上角菜單中的轉發按鈕會有同樣的效果。ide

<button open-type='share' type='warn' size="mini" plain="true" id='btnShare0'>推薦給好友</button>

固然,跟右上角菜單中的轉發按鈕同樣,若是設置了自定義轉發內容,點擊分享按鈕也會展現自定義分享內容的。函數

三. 關閉分享功能:

wx.hideShareMenu(Object object):隱藏轉發按鈕,關閉轉發功能(不影響轉發按鈕的功能,只是右上角分享沒有了)。
  /**
   * 生命週期函數--監聽頁面加載
   */
  onLoad: function(options) {
    wx.hideShareMenu()
  },
  /**
   * 生命週期函數--監聽頁面顯示
   */
  onShow: function() {
    wx.hideShareMenu()
  },

 

四. 獲取更多轉發信息:

轉發出去的小程序被二次打開的時候可以獲取到一些信息,例如羣的標識。

大體流程:

1. 經過調用 wx.showShareMenu 而且設置 withShareTicket 爲 true ;
2. 當用戶將小程序轉發到任一羣聊以後, 此轉發卡片在羣聊中被其餘用戶打開時,能夠在 App.onLaunch 或 App.onShow 獲取到一個 shareTicket;
3. 經過調用 wx.getShareInfo() 接口傳入此 shareTicket 能夠獲取到轉發信息。

示例代碼:

  //分享頁面設置開啓分享羣信息
  /**
   * 生命週期函數--監聽頁面加載
   */
  onLoad: function(options) {
    wx.showShareMenu({
      withShareTicket: true
    })
  },
  /**
   * 生命週期函數--監聽頁面顯示
   */
  onShow: function() {
    wx.showShareMenu({
      withShareTicket: true
    })
  }
//app.js 獲取小程序名片頁附帶的分享信息
App({
  onLaunch: function(ops) {
    //小程序在羣裏被打開後,獲取情景值和shareTicket
    console.log("ops:", ops)
    if (ops.scene==1044) {
      wx.getShareInfo({
        shareTicket: ops.shareTicket,
        success:function(res) {
          console.log("wx.getShareInfo:::", res)
        }
      })
    }
  }
})

分享到羣裏以後,在羣裏打開小程序,獲取相似下面的數據:

如上圖,獲取的就是分享到的羣聊的相關信息了,不過這個信息是加密的,須要像獲取手機號同樣再去後端解密才能夠。

其中 encryptedData 解密後爲如下 json 結構,詳見加密數據解密算法。其中 openGId 爲當前羣的惟一標識:

{
"openGId": "OPENGID"
}
如須要展現羣名稱,可使用 開放數據組件

經驗證,這個功能只有在分享到羣聊中才會有效,也就是說只能區分小程序是在羣中仍是好友聊天窗口中打開的,因此這個功能是比較雞肋的。

五. 其餘一些功能:

還有一個接口,就是更新轉發屬性的接口:wx.updateShareMenu(Object object),日常用的很少,感興趣的能夠自行去官網研究。

相關文章
相關標籤/搜索