微信小程序 轉(zhuǎn)發(fā)功能的實(shí)現(xiàn)
1.當(dāng)用戶將小程序轉(zhuǎn)發(fā)到任一群聊之后,可以獲取到此次轉(zhuǎn)發(fā)的 shareTicket
2.此轉(zhuǎn)發(fā)卡片在群聊中被其他用戶打開時(shí),可以在 App.onLaunch() 或 App.onShow 獲取到另一個(gè) shareTicket
3.兩步獲取到的 shareTicket 均可通過 wx.getShareInfo() 接口可以獲取到相同的轉(zhuǎn)發(fā)信息。
onShareAppMessage(options)函數(shù)設(shè)置該頁面的轉(zhuǎn)發(fā)信息。
options參數(shù)說明:
from:轉(zhuǎn)發(fā)事件來源。button:頁面內(nèi)轉(zhuǎn)發(fā)按鈕;menu:右上角轉(zhuǎn)發(fā)菜單;
target:如果 from 值是 button,則
target 是觸發(fā)這次轉(zhuǎn)發(fā)事件的 button,否則為 undefined
自定義字段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | return { title: '轉(zhuǎn)發(fā)' , //
轉(zhuǎn)發(fā)標(biāo)題(默認(rèn):當(dāng)前小程序名稱) path: '/pages/index/index' ,
// 轉(zhuǎn)發(fā)路徑(當(dāng)前頁面 path ),必須是以 / 開頭的完整路徑 success(e) { // shareAppMessage: ok, // shareTickets 數(shù)組,每一項(xiàng)是一個(gè) shareTicket ,對應(yīng)一個(gè)轉(zhuǎn)發(fā)對象 // 需要在頁面onLoad()事件中實(shí)現(xiàn)接口 wx.showShareMenu({ // 要求小程序返回分享目標(biāo)信息 withShareTicket:
true }); }, fail(e) { // shareAppMessage:fail cancel // shareAppMessage:fail(detail message) }, complete() { } } |
wx.showShareMenu(OBJECT) 帶 shareTicket 的轉(zhuǎn)發(fā)。
1.在SDK中與真機(jī)調(diào)試的過程中,都需要設(shè)withShareTicket為true,
2.否則在真機(jī)的調(diào)試過程中,即便選擇了轉(zhuǎn)發(fā)的群聊,也不會返回shareTicket
1 2 3 4 5 6 7 8 9 | onLoad(e)
{ wx.showShareMenu({ withShareTicket: true }) }, onShow(e) { wx.showShareMenu({ withShareTicket: true }) }, |
wx.getShareInfo(OBJECT)獲取轉(zhuǎn)發(fā)詳細(xì)信息
1 2 3 4 5 6 7 8 9 10 11 12 13 | if (res.shareTickets) { // 獲取轉(zhuǎn)發(fā)詳細(xì)信息 wx.getShareInfo({ shareTicket: res.shareTickets[0], success(res) { res.errMsg; //
錯(cuò)誤信息 res.encryptedData; // 解密后為一個(gè)
JSON 結(jié)構(gòu)(openGId 群對當(dāng)前小程序的唯一 ID) res.iv; //
加密算法的初始向量 }, fail() {}, complete() {} }); } |
小程序在群里被打開后,獲取情景值和shareTicket
1 2 3 4 5 6 7 8 | //app.js App({ onLaunch: function (ops) { if (ops.scene == 1044)
{ console.log(ops.shareTicket) } } }) |
Bug & Tip
1.頁面之間的參數(shù)傳遞,需要在onLoad()函數(shù)中接收,onShow()函數(shù)中無法接收。
2.獲取群聊中被打開的小程序的shareTicket,需要在App.onLaunch() 或 App.onShow()。
頁面的生命周期函數(shù)中是獲取不到的。
3.將轉(zhuǎn)發(fā)內(nèi)容至單個(gè)用戶時(shí),是無法獲取到shareTicket 。