最近在調研小程序的分享能力,本篇文檔主要是調研小程序關于分享方面的玩法,目的是學習小程序在項目應用以及玩法鏈上的擴展。
小程序如果想對外分享,必須在 page 里面定義 onShareAppMessage 函數,來配置頁面分享轉發相關的信息。
一個頁面可能會有多個分享,可以由插入的參數options來判斷具體是由哪個位置進行分享,從而做不同的邏輯判斷。
return對象的返回函數:
如果定義了該事件,又不想通過頁面menu轉發,可以通過 hideShareMenu來隱藏掉
注意事項:
一般是用來配置相關的參數,常見的如 withShareTicket ,用它來獲取群信息,群的相關標示。
wx.showShareMenu({ withShareTicket: true }) 復制代碼
隱藏menu級別的轉發功能,但是button中還存在著轉發。
如果先設置 showShareMenu ,并且配置了 withShareTicket,再用 hideShareMenu 方法,通過按鈕轉發,照樣能獲取 shareTicket,如下:
wx.showShareMenu({ withShareTicket: true }) wx.hideShareMenu({ }) 復制代碼
更新shareMenu信息需要用update操作哦,這里需要注意下,一般都是會更新 withShareTicket 屬性。
在拿到了shareTicket信息后,可以由此API獲取轉發詳細信息
wx.getShareInfo({ shareTicket: res.shareTickets[0], success: ... fail: ... }) 復制代碼
相關回調的參數
{ errMsg: "getShareInfo:ok", iv: "gRHeFU+Nhr36RmladCXnRQ==", encryptedData: "IQ/RwZLeQFUGuxv0bBfOrL/KLnXO+bxcyCBru5lB92FkHIg8ae…7TnHwU+rqgerFKvpvS5JbFyh+9liUqyb2bk6/LETYQ+h/FQ==" } 復制代碼
由iv和encryptedData進行解密,可以拿到openGId的值。為當前群對當前小程序的唯一值。額外還可以拿到群名稱等更多的開放數據。
頁面內需要轉發時,需要給 button 組件設置 open-type="share" ,并在觸發的地方判斷來源。
在小程序中,獲取openGId主要有兩種途徑,也一般圍繞著兩種途徑做分享相關的開發:
傳統APP要以小程序卡片的形式分享到微信,需要滿足以下幾個條件:
要求發起分享的App與小程序屬于同一微信開放平臺帳號;
支持分享小程序類型消息至好友會話,不支持“分享至朋友圈” “收藏”;
微信客戶端版本要求:6.5.6及以上微信客戶端版本,若客戶端版本低于6.5.6,小程序類型分享將自動轉成網頁類型分享。開發者必須填寫網頁鏈接字段,確保低版本客戶端能正常打開網頁鏈接;
支持分享大圖卡片樣式,自定義圖片建議長寬比是 5:4。6.5.9及以上版本微信客戶端小程序類型分享使用大圖卡片樣式。
支持分享開發版/體驗版小程序,為支持開發者調試,開發者工具包支持分享開發版/體驗版小程序至微信,開發者可控制分享的小程序版本。
具體流程圖如下:
在朋友圈中,發布圖片附帶小程序二維碼,用戶把圖片分享到朋友圈中,看到的一方即可長恩識別在微信中打開小程序。 通過這個玩法,實現了把小程序「分享」到朋友圈。
至于圖片的生成,canvas和服務器端生成都是比較成熟的解決方案。
這個玩法有一個前提:小程序卡片必須是由APP分享出去,才可以打開APP
功能流程圖如下:
該途徑可以作為小程序對于app的補充: 產品可以通過 App 和小程序實現場景互補。
比如用戶 Sherry 將一個文檔分享給用戶 Kevin,Kevin 可以在小程序內直接查看。如果需要編輯,則可以直接打開 App 完成協同處理。這樣一來,小程序不需要做的很重,只需滿足基本功能,更多功能由 App 來補充。
case舉例:用戶代打車,用戶A想讓用戶B代打車,用戶A將行程分享給用戶B,用戶B微信打開小程序之后,跳轉美團打車APP完成相關復雜操作。
在小程序中,可以利用一些引導性文案指引用戶點擊進入客服會話頁面,然后客服自動回復一條公眾號圖文消息,而圖文消息則有引導關注公眾號獲取更多服務的指引文案。( 經典用法,但是小心被封 )