微信小程序API 轉(zhuǎn)發(fā) (Page.onShareAppMessage)

2022-05-10 16:04 更新

onShareAppMessage(options)


在 Page 中定義 onShareAppMessage 函數(shù),設(shè)置該頁(yè)面的轉(zhuǎn)發(fā)信息。

  • 只有定義了此事件處理函數(shù),右上角菜單才會(huì)顯示“轉(zhuǎn)發(fā)”按鈕
  • 用戶點(diǎn)擊轉(zhuǎn)發(fā)按鈕的時(shí)候會(huì)調(diào)用
  • 此事件需要 return 一個(gè) Object,用于自定義轉(zhuǎn)發(fā)內(nèi)容

options 參數(shù)說(shuō)明

參數(shù)類型說(shuō)明最低版本
fromString轉(zhuǎn)發(fā)事件來(lái)源。button:頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕;menu:右上角轉(zhuǎn)發(fā)菜單1.2.4
targetObject如果 from 值是 button,則 target 是觸發(fā)這次轉(zhuǎn)發(fā)事件的 button,否則為 undefined1.2.4
自定義轉(zhuǎn)發(fā)字段

字段說(shuō)明默認(rèn)值最低版本
title轉(zhuǎn)發(fā)標(biāo)題當(dāng)前小程序名稱 
path轉(zhuǎn)發(fā)路徑當(dāng)前頁(yè)面 path ,必須是以 / 開(kāi)頭的完整路徑 
success轉(zhuǎn)發(fā)成功的回調(diào)函數(shù) 1.1.0
fail轉(zhuǎn)發(fā)失敗的回調(diào)函數(shù) 1.1.0
complete轉(zhuǎn)發(fā)結(jié)束的回調(diào)函數(shù)(轉(zhuǎn)發(fā)成功、失敗都會(huì)執(zhí)行 1.1.0

回調(diào)結(jié)果:

回調(diào)類型errMsg說(shuō)明
successshareAppMessage:ok轉(zhuǎn)發(fā)成功
failshareAppMessage:fail cancel用戶取消轉(zhuǎn)發(fā)
failshareAppMessage:fail (detail message)轉(zhuǎn)發(fā)失敗,其中 detail message 為詳細(xì)失敗信息

success回調(diào)參數(shù)說(shuō)明:

參數(shù)類型說(shuō)明最低版本
shareTicketsStringArrayshareTicket 數(shù)組,每一項(xiàng)是一個(gè) shareTicket ,對(duì)應(yīng)一個(gè)轉(zhuǎn)發(fā)對(duì)象1.1.0

示例代碼:

Page({
  onShareAppMessage: function (res) {
    if (res.from === 'button') {
      // 來(lái)自頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕
      console.log(res.target)
    }
    return {
      title: '自定義轉(zhuǎn)發(fā)標(biāo)題',
      path: '/page/user?id=123',
      success: function(res) {
        // 轉(zhuǎn)發(fā)成功
      },
      fail: function(res) {
        // 轉(zhuǎn)發(fā)失敗
      }
    }
  }
})

wx.showShareMenu(OBJECT)

基礎(chǔ)庫(kù)版本 1.1.0 開(kāi)始支持,低版本需做兼容處理

顯示當(dāng)前頁(yè)面的轉(zhuǎn)發(fā)按鈕

OBJECT參數(shù)說(shuō)明:

參數(shù)類型必填說(shuō)明
withShareTicketBoolean是否使用帶 shareTicket 的轉(zhuǎn)發(fā)詳情
successFunction接口調(diào)用成功的回調(diào)函數(shù)
failFunction接口調(diào)用失敗的回調(diào)函數(shù)
completeFunction接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

示例代碼:

wx.showShareMenu({
  withShareTicket: true
})

wx.hideShareMenu(OBJECT)

基礎(chǔ)庫(kù)版本 1.1.0 開(kāi)始支持,低版本需做兼容處理

隱藏轉(zhuǎn)發(fā)按鈕

OBJECT參數(shù)說(shuō)明:

參數(shù)類型必填說(shuō)明
successFunction接口調(diào)用成功的回調(diào)函數(shù)
failFunction接口調(diào)用失敗的回調(diào)函數(shù)
completeFunction接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

示例代碼:

wx.hideShareMenu()

wx.updateShareMenu(OBJECT)

基礎(chǔ)庫(kù) 1.2.0 開(kāi)始支持,低版本需做兼容處理

更新轉(zhuǎn)發(fā)屬性

OBJECT參數(shù)說(shuō)明:

參數(shù)類型必填說(shuō)明
withShareTicketBoolean是否使用帶 shareTicket 的轉(zhuǎn)發(fā)詳情
successFunction接口調(diào)用成功的回調(diào)函數(shù)
failFunction接口調(diào)用失敗的回調(diào)函數(shù)
completeFunction接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

示例代碼:

wx.updateShareMenu({
  withShareTicket: true,
  success() {
  }
})

wx.getShareInfo(OBJECT)

基礎(chǔ)庫(kù) 1.1.0 開(kāi)始支持,低版本需做兼容處理

獲取轉(zhuǎn)發(fā)詳細(xì)信息

OBJECT參數(shù)說(shuō)明:

參數(shù)類型必填說(shuō)明
shareTicketStringshareTicket
successFunction接口調(diào)用成功的回調(diào)函數(shù)
failFunction接口調(diào)用失敗的回調(diào)函數(shù)
completeFunction接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行)

CALLBACK 參數(shù)說(shuō)明:

參數(shù)類型說(shuō)明
errMsgString錯(cuò)誤信息
encryptedDataString包括敏感數(shù)據(jù)在內(nèi)的完整轉(zhuǎn)發(fā)信息的加密數(shù)據(jù),詳細(xì)見(jiàn)加密數(shù)據(jù)解密算法
ivString加密算法的初始向量,詳細(xì)見(jiàn)加密數(shù)據(jù)解密算法

encryptedData 解密后為一個(gè) JSON 結(jié)構(gòu),包含字段如下:

字段說(shuō)明
openGId群對(duì)當(dāng)前小程序的唯一 ID

Tip: 如需要展示群名稱,可以使用開(kāi)放數(shù)據(jù)組件

獲取更多轉(zhuǎn)發(fā)信息

通常開(kāi)發(fā)者希望轉(zhuǎn)發(fā)出去的小程序被二次打開(kāi)的時(shí)候能夠獲取到一些信息,例如群的標(biāo)識(shí)?,F(xiàn)在通過(guò)調(diào)用 wx.showShareMenu 并且設(shè)置 withShareTicket 為 true ,當(dāng)用戶將小程序轉(zhuǎn)發(fā)到任一群聊之后,可以獲取到此次轉(zhuǎn)發(fā)的 shareTicket,此轉(zhuǎn)發(fā)卡片在群聊中被其他用戶打開(kāi)時(shí),可以在 App.onLaunch() 或 App.onShow 獲取到另一個(gè) shareTicket。這兩步獲取到的 shareTicket 均可通過(guò) wx.getShareInfo() 接口可以獲取到相同的轉(zhuǎn)發(fā)信息。

頁(yè)面內(nèi)發(fā)起轉(zhuǎn)發(fā)

基礎(chǔ)庫(kù) 1.2.0 開(kāi)始支持,低版本需做兼容處理

通過(guò)給 button 組件設(shè)置屬性 open-type="share",可以在用戶點(diǎn)擊按鈕后觸發(fā) Page.onShareAppMessage() 事件,如果當(dāng)前頁(yè)面沒(méi)有定義此事件,則點(diǎn)擊后無(wú)效果。相關(guān)組件:button

使用指引

轉(zhuǎn)發(fā)按鈕,旨在幫助用戶更流暢地與好友分享內(nèi)容和服務(wù)。轉(zhuǎn)發(fā),應(yīng)是用戶自發(fā)的行為,且在需要時(shí)觸手可及。開(kāi)發(fā)者在使用時(shí)若遵從以下指引,會(huì)得到更佳的用戶體驗(yàn)。

  1. 含義清晰:明確、一目了然的圖形按鈕,將為用戶減少理解的時(shí)間。在我們的資源下載中心,你可以找到這樣的按鈕素材并直接使用?;蛘吣憧梢愿鶕?jù)自己業(yè)務(wù)的設(shè)計(jì)風(fēng)格,靈活設(shè)計(jì)含義清晰的按鈕的樣式。當(dāng)然,你也可以直接使用帶文案的按鈕,“轉(zhuǎn)發(fā)給好友”,它也足夠明確。
  2. 方便點(diǎn)擊:按鈕點(diǎn)擊熱區(qū)不宜過(guò)小,亦不宜過(guò)大。同時(shí),轉(zhuǎn)發(fā)按鈕與其他按鈕一樣,熱區(qū)也不宜過(guò)密,以免用戶誤操作。
  3. 按需出現(xiàn):并非所有頁(yè)面都適合放置轉(zhuǎn)發(fā)按鈕,涉及用戶隱私的非公開(kāi)內(nèi)容,或可能打斷用戶完成當(dāng)前操作體驗(yàn)的場(chǎng)景,該功能并不推薦使用。同時(shí),由于轉(zhuǎn)發(fā)過(guò)程中,我們將截取用戶屏幕圖像作為配圖,因此,需要注意幫助用戶屏蔽個(gè)人信息。
  4. 尊重意愿:理所當(dāng)然,并非所有的用戶,都喜歡與朋友分享你的小程序。因此,它不應(yīng)該成為一個(gè)誘導(dǎo)或強(qiáng)制行為,如轉(zhuǎn)發(fā)后才能解鎖某項(xiàng)功能等。請(qǐng)注意,這類做法不僅不被推薦,還可能違反我們的《運(yùn)營(yíng)規(guī)范》,我們強(qiáng)烈建議你在使用前閱讀這部分內(nèi)容。

以上,我們陳列了最重要的幾點(diǎn),如果你有時(shí)間,可以完整瀏覽《設(shè)計(jì)指南》,相信會(huì)有更多的收獲。

Bug & Tip

  1. tip: 轉(zhuǎn)發(fā)圖片不能自定義;會(huì)取當(dāng)前頁(yè)面,從頂部開(kāi)始,高度為 80% 屏幕寬度的圖像作為轉(zhuǎn)發(fā)圖片。
  2. tip: 轉(zhuǎn)發(fā)的調(diào)試支持請(qǐng)查看 普通轉(zhuǎn)發(fā)的調(diào)試支持 和 帶 shareTicket 的轉(zhuǎn)發(fā)
  3. tip: 只有轉(zhuǎn)發(fā)到群聊中打開(kāi)才可以獲取到 shareTickets 返回值,單聊沒(méi)有 shareTickets
  4. tipshareTicket 僅在當(dāng)前小程序生命周期內(nèi)有效
  5. tip: 由于策略變動(dòng),小程序群相關(guān)能力進(jìn)行調(diào)整,開(kāi)發(fā)者可先使用wx.getShareInfo接口中的群ID進(jìn)行功能開(kāi)發(fā)。




以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)