微信小程序API轉(zhuǎn)發(fā),小程序顯示當(dāng)前頁(yè)面的轉(zhuǎn)發(fā)按鈕
onShareAppMessage(options)
在 Page 中定義 onShareAppMessage 函數(shù),設(shè)置該頁(yè)面的轉(zhuǎn)發(fā)信息。
- 只有定義了此事件處理函數(shù),右上角菜單才會(huì)顯示“轉(zhuǎn)發(fā)”按鈕
- 用戶(hù)點(diǎn)擊轉(zhuǎn)發(fā)按鈕的時(shí)候會(huì)調(diào)用
- 此事件需要 return 一個(gè) Object,用于自定義轉(zhuǎn)發(fā)內(nèi)容
options 參數(shù)說(shuō)明
參數(shù) | 類(lèi)型 | 說(shuō)明 | 最低版本 |
---|---|---|---|
from | String | 轉(zhuǎn)發(fā)事件來(lái)源。button:頁(yè)面內(nèi)轉(zhuǎn)發(fā)按鈕;menu:右上角轉(zhuǎn)發(fā)菜單 | 1.2.4 |
target | Object | 如果 from 值是 button,則 target 是觸發(fā)這次轉(zhuǎn)發(fā)事件的 button,否則為 undefined | 1.2.4 |
字段 | 說(shuō)明 | 默認(rèn)值 | 最低版本 |
---|---|---|---|
title | 轉(zhuǎn)發(fā)標(biāo)題 | 當(dāng)前小程序名稱(chē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)類(lèi)型 | errMsg | 說(shuō)明 |
---|---|---|
success | shareAppMessage:ok | 轉(zhuǎn)發(fā)成功 |
fail | shareAppMessage:fail cancel | 用戶(hù)取消轉(zhuǎn)發(fā) |
fail | shareAppMessage:fail (detail message) | 轉(zhuǎn)發(fā)失敗,其中 detail message 為詳細(xì)失敗信息 |
success回調(diào)參數(shù)說(shuō)明:
參數(shù) | 類(lèi)型 | 說(shuō)明 | 最低版本 |
---|---|---|---|
shareTickets | StringArray | shareTicket 數(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ù) | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
withShareTicket | Boolean | 否 | 是否使用帶 shareTicket 的轉(zhuǎn)發(fā)詳情 |
success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) |
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | Function | 否 | 接口調(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ù) | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) |
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | Function | 否 | 接口調(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ù) | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
withShareTicket | Boolean | 否 | 是否使用帶 shareTicket 的轉(zhuǎn)發(fā)詳情 |
success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) |
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | Function | 否 | 接口調(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ù) | 類(lèi)型 | 必填 | 說(shuō)明 |
---|---|---|---|
shareTicket | String | 是 | shareTicket |
success | Function | 否 | 接口調(diào)用成功的回調(diào)函數(shù) |
fail | Function | 否 | 接口調(diào)用失敗的回調(diào)函數(shù) |
complete | Function | 否 | 接口調(diào)用結(jié)束的回調(diào)函數(shù)(調(diào)用成功、失敗都會(huì)執(zhí)行) |
CALLBACK 參數(shù)說(shuō)明:
參數(shù) | 類(lèi)型 | 說(shuō)明 |
---|---|---|
errMsg | String | 錯(cuò)誤信息 |
encryptedData | String | 包括敏感數(shù)據(jù)在內(nèi)的完整轉(zhuǎn)發(fā)信息的加密數(shù)據(jù),詳細(xì)見(jiàn)加密數(shù)據(jù)解密算法 |
iv | String | 加密算法的初始向量,詳細(xì)見(jiàn)加密數(shù)據(jù)解密算法 |
encryptedData 解密后為一個(gè) JSON 結(jié)構(gòu),包含字段如下:
字段 | 說(shuō)明 |
---|---|
openGId | 群對(duì)當(dāng)前小程序的唯一 ID |
Tip: 如需要展示群名稱(chēng),可以使用開(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)用戶(hù)將小程序轉(zhuǎn)發(fā)到任一群聊之后,可以獲取到此次轉(zhuǎn)發(fā)的 shareTicket
,此轉(zhuǎn)發(fā)卡片在群聊中被其他用戶(hù)打開(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"
,可以在用戶(hù)點(diǎn)擊按鈕后觸發(fā) Page.onShareAppMessage()
事件,如果當(dāng)前頁(yè)面沒(méi)有定義此事件,則點(diǎn)擊后無(wú)效果。相關(guān)組件:button
使用指引
轉(zhuǎn)發(fā)按鈕,旨在幫助用戶(hù)更流暢地與好友分享內(nèi)容和服務(wù)。轉(zhuǎn)發(fā),應(yīng)是用戶(hù)自發(fā)的行為,且在需要時(shí)觸手可及。開(kāi)發(fā)者在使用時(shí)若遵從以下指引,會(huì)得到更佳的用戶(hù)體驗(yàn)。
- 含義清晰:明確、一目了然的圖形按鈕,將為用戶(hù)減少理解的時(shí)間。在我們的資源下載中心,你可以找到這樣的按鈕素材并直接使用?;蛘吣憧梢愿鶕?jù)自己業(yè)務(wù)的設(shè)計(jì)風(fēng)格,靈活設(shè)計(jì)含義清晰的按鈕的樣式。當(dāng)然,你也可以直接使用帶文案的按鈕,“轉(zhuǎn)發(fā)給好友”,它也足夠明確。
- 方便點(diǎn)擊:按鈕點(diǎn)擊熱區(qū)不宜過(guò)小,亦不宜過(guò)大。同時(shí),轉(zhuǎn)發(fā)按鈕與其他按鈕一樣,熱區(qū)也不宜過(guò)密,以免用戶(hù)誤操作。
- 按需出現(xiàn):并非所有頁(yè)面都適合放置轉(zhuǎn)發(fā)按鈕,涉及用戶(hù)隱私的非公開(kāi)內(nèi)容,或可能打斷用戶(hù)完成當(dāng)前操作體驗(yàn)的場(chǎng)景,該功能并不推薦使用。同時(shí),由于轉(zhuǎn)發(fā)過(guò)程中,我們將截取用戶(hù)屏幕圖像作為配圖,因此,需要注意幫助用戶(hù)屏蔽個(gè)人信息。
- 尊重意愿:理所當(dāng)然,并非所有的用戶(hù),都喜歡與朋友分享你的小程序。因此,它不應(yīng)該成為一個(gè)誘導(dǎo)或強(qiáng)制行為,如轉(zhuǎn)發(fā)后才能解鎖某項(xiàng)功能等。請(qǐng)注意,這類(lèi)做法不僅不被推薦,還可能違反我們的《運(yùn)營(yíng)規(guī)范》,我們強(qiáng)烈建議你在使用前閱讀這部分內(nèi)容。
以上,我們陳列了最重要的幾點(diǎn),如果你有時(shí)間,可以完整瀏覽《設(shè)計(jì)指南》,相信會(huì)有更多的收獲。
Bug & Tip
-
tip
: 轉(zhuǎn)發(fā)圖片不能自定義;會(huì)取當(dāng)前頁(yè)面,從頂部開(kāi)始,高度為 80% 屏幕寬度的圖像作為轉(zhuǎn)發(fā)圖片。 -
tip
: 轉(zhuǎn)發(fā)的調(diào)試支持請(qǐng)查看 普通轉(zhuǎn)發(fā)的調(diào)試支持 和 帶 shareTicket 的轉(zhuǎn)發(fā) -
tip
: 只有轉(zhuǎn)發(fā)到群聊中打開(kāi)才可以獲取到shareTickets
返回值,單聊沒(méi)有shareTickets
-
tip
:shareTicket
僅在當(dāng)前小程序生命周期內(nèi)有效 -
tip
: 由于策略變動(dòng),小程序群相關(guān)能力進(jìn)行調(diào)整,開(kāi)發(fā)者可先使用wx.getShareInfo
接口中的群ID進(jìn)行功能開(kāi)發(fā)。
更多微信小程序開(kāi)發(fā)教程,可以關(guān)注hi小程序。
第二部分:如何開(kāi)通一個(gè)小商店