微信小程序 转发 分享功能(二)
關(guān)于小程序的轉(zhuǎn)發(fā):
最簡(jiǎn)單的就是點(diǎn)擊小程序右上角菜單“轉(zhuǎn)發(fā)”按鈕直接分享,不過這種分享有點(diǎn)不太友好,實(shí)用性也不強(qiáng)。
當(dāng)然,你可以自定義分享內(nèi)容,包括標(biāo)題,簡(jiǎn)介,圖片及分享的小程序頁(yè)面路徑。
再高級(jí)一點(diǎn),還可以對(duì)轉(zhuǎn)發(fā)出去的小程序被二次打開的時(shí)候獲取到一些信息。
一. 自定義轉(zhuǎn)發(fā)內(nèi)容:
onShareAppMessage(Obj):
1. 監(jiān)聽轉(zhuǎn)發(fā)按鈕(button open-type="share")或小程序右上角“轉(zhuǎn)發(fā)”按鈕的點(diǎn)擊行為;
2. 自定義轉(zhuǎn)發(fā)分享內(nèi)容。
3. 還可以監(jiān)聽這些信息:
示例代碼:
/**
* 用戶分享自定義
*/
onShareAppMessage: function(res) {
return {
title: '哈根達(dá)斯冰激凌5折特惠',
path: '/pages/index/index?goods_id=' + wx.getStorageSync("goods_id"),
imageUrl: 'http://static.e-mallchina.com/pic/product/brand/detail/hgds.jpg'//自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑。支持PNG及JPG。顯示圖片長(zhǎng)寬比是 5:4。
}
}
點(diǎn)擊右上角菜單中的“轉(zhuǎn)發(fā)”按鈕,分享效果如下:
二. 點(diǎn)擊頁(yè)面按鈕分享轉(zhuǎn)發(fā):
<button>組件設(shè)置open-type="share"即可實(shí)現(xiàn)頁(yè)面內(nèi)分享,點(diǎn)擊按鈕即可跟點(diǎn)擊右上角菜單中的轉(zhuǎn)發(fā)按鈕會(huì)有一樣的效果。
<button open-type='share' type='warn' size="mini" plain="true" id='btnShare0'>推薦給好友</button>
當(dāng)然,跟右上角菜單中的轉(zhuǎn)發(fā)按鈕一樣,如果設(shè)置了自定義轉(zhuǎn)發(fā)內(nèi)容,點(diǎn)擊分享按鈕也會(huì)展示自定義分享內(nèi)容的。
三. 關(guān)閉分享功能:
wx.hideShareMenu(Object object):隱藏轉(zhuǎn)發(fā)按鈕,關(guān)閉轉(zhuǎn)發(fā)功能(不影響轉(zhuǎn)發(fā)按鈕的功能,只是右上角分享沒有了)。
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
*/
onLoad: function(options) {
wx.hideShareMenu()
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面顯示
*/
onShow: function() {
wx.hideShareMenu()
},
四. 獲取更多轉(zhuǎn)發(fā)信息:
轉(zhuǎn)發(fā)出去的小程序被二次打開的時(shí)候能夠獲取到一些信息,例如群的標(biāo)識(shí)。
大致流程:
1. 通過調(diào)用 wx.showShareMenu 并且設(shè)置 withShareTicket 為 true ;
2. 當(dāng)用戶將小程序轉(zhuǎn)發(fā)到任一群聊之后,此轉(zhuǎn)發(fā)卡片在群聊中被其他用戶打開時(shí),可以在 App.onLaunch 或 App.onShow 獲取到一個(gè) shareTicket;
3. 通過調(diào)用 wx.getShareInfo() 接口傳入此 shareTicket 可以獲取到轉(zhuǎn)發(fā)信息。
示例代碼:
//分享頁(yè)面設(shè)置開啟分享群信息
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面加載
*/
onLoad: function(options) {
wx.showShareMenu({
withShareTicket: true
})
},
/**
* 生命周期函數(shù)--監(jiān)聽頁(yè)面顯示
*/
onShow: function() {
wx.showShareMenu({
withShareTicket: true
})
}
//app.js 獲取小程序名片頁(yè)附帶的分享信息
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)
}
})
}
}
})
分享到群里之后,在群里打開小程序,獲取類似下面的數(shù)據(jù):
如上圖,獲取的就是分享到的群聊的相關(guān)信息了,不過這個(gè)信息是加密的,需要像獲取手機(jī)號(hào)一樣再去后端解密才可以。
其中encryptedData解密后為以下 json 結(jié)構(gòu),詳見加密數(shù)據(jù)解密算法。其中 openGId 為當(dāng)前群的唯一標(biāo)識(shí):
{
"openGId": "OPENGID"
}
如需要展示群名稱,可以使用開放數(shù)據(jù)組件。
經(jīng)驗(yàn)證,這個(gè)功能只有在分享到群聊中才會(huì)有效,也就是說(shuō)只能區(qū)分小程序是在群中還是好友聊天窗口中打開的,所以這個(gè)功能是比較雞肋的。
五. 其他一些功能:
還有一個(gè)接口,就是更新轉(zhuǎn)發(fā)屬性的接口:wx.updateShareMenu(Object object),平常用的不多,感興趣的可以自行去官網(wǎng)研究。
來(lái)源地址:https://www.cnblogs.com/xyyt
總結(jié)
以上是生活随笔為你收集整理的微信小程序 转发 分享功能(二)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java命令:jstack — 获取线程
- 下一篇: Android P正式版即将到来:后台应