好記星不如爛筆頭,寫一寫記錄下。
一. 用到的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)步驟
- 轉(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>
- 在頁(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,有啥用后面說。
- 無(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
- 開發(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則可以做一些其他判斷。