在開(kāi)發(fā)微信小程序過(guò)程中,需要實(shí)現(xiàn)將小程序分享到朋友圈酪惭,以擴(kuò)大宣傳范圍希痴,吸引流量。
實(shí)現(xiàn)也不難春感,滿足【兩個(gè)條件】即可:
- 首先砌创,頁(yè)面需設(shè)置允許“發(fā)送給朋友”。具體參考
Page.onShareAppMessage
接口文檔 - 滿足條件 1 后鲫懒,頁(yè)面需設(shè)置允許“分享到朋友圈”嫩实,同時(shí)可自定義標(biāo)題、分享圖等窥岩。具體參考
Page.onShareTimeline
接口文檔
滿足上述兩個(gè)條件的頁(yè)面甲献,可被分享到朋友圈(在微信小程序中點(diǎn)擊右上角【...】)。
實(shí)現(xiàn)則是在Page中定義onShareTimeline()此事件處理函數(shù)颂翼,點(diǎn)擊右上角【...】菜單后彈出層才會(huì)顯示【分享到朋友圈】按鈕晃洒,如下圖(『分享到朋友圈』是彩色高亮狀態(tài)):
不過(guò)需要注意的是微信小程序是從基礎(chǔ)庫(kù) 2.11.3 才開(kāi)始支持的。詳細(xì)可參考微信平臺(tái)官方文檔說(shuō)明:https://developers.weixin.qq.com/miniprogram/dev/reference/api`/Page.html#onShareTimeline
支持自定義分享內(nèi)容朦乏,參考代碼片斷如下:
onShareTimeline() {
return {
title: '歡迎打開(kāi)我的微信小程序【廢話文學(xué)間】'
imageUrl: '', // 可自定義圖片球及,若圖片URL為空則默認(rèn)取小程序Logo
query: 'id=1'
};
}
參數(shù)解釋:
但是,由于用戶在朋友圈中打開(kāi)分享后呻疹,小程序呈現(xiàn)的是【單頁(yè)模式】吃引,在這個(gè)模式下,一些組件或API接口存在一定限制刽锤,詳情見(jiàn)下文【單頁(yè)模式下的限制】章節(jié)镊尺。
除了這些以上明文規(guī)定的限制,還有當(dāng)query傳參內(nèi)容過(guò)多過(guò)長(zhǎng)時(shí)并思,也是無(wú)法分享到朋友圈的庐氮。
而當(dāng)【query】參數(shù)中含有中文和其他特殊字符時(shí),還需進(jìn)行URL編碼宋彼,代碼片斷參考如下:
onShareTimeline() {
return {
title: '歡迎打開(kāi)我的微信小程序【廢話文學(xué)間】'
imageUrl: '', // 可自定義圖片弄砍,若圖片URL為空則默認(rèn)取小程序Logo
query: 'id=1&name=' + encodeURIComponent('中文內(nèi)容和特殊字符’)
};
}
實(shí)測(cè)中颅筋,微信云開(kāi)發(fā)中的數(shù)據(jù)庫(kù)查詢相關(guān)API也會(huì)受限制,如果將某個(gè)重度依賴微信云開(kāi)發(fā)數(shù)據(jù)庫(kù)查詢的頁(yè)面分享到朋友圈输枯,用戶在朋友圈點(diǎn)擊打開(kāi)將是一個(gè)相當(dāng)不完整的頁(yè)面,那體驗(yàn)會(huì)大打折扣(雖然這個(gè)【單頁(yè)模式】右下角會(huì)有一個(gè)【前往小程序】可以打開(kāi)小程序體驗(yàn)完整頁(yè)面功能占贫,但大多用戶估計(jì)也不會(huì)注意到這么一個(gè)按鈕桃熄,就算注意到了,也沒(méi)多少人會(huì)愿意點(diǎn)擊)型奥。
本人想到一個(gè)蹩腳的解決辦法就是在分享前瞳收,將該頁(yè)面需要用到的數(shù)據(jù)先查詢出來(lái),塞到【query】參數(shù)中傳過(guò)去厢汹,由頁(yè)面去接收處理螟深。但這樣也有缺點(diǎn),就是前面提到的:不可傳過(guò)多的數(shù)據(jù)烫葬。如果你有更好的方法界弧,歡迎留言探討!