微信小程式統一分享,全域性接管頁面分享訊息的一些技巧

語言: CN / TW / HK

小知識,大挑戰!本文正在參與“程式設計師必備小知識”創作活動。

本文已參與 「掘力星計劃」 ,贏取創作大禮包,挑戰創作激勵金。


前言

最近都在折騰這個我自己個人技術內容聚合的小程式。除了作為掘金文章,嗶哩嗶哩視訊的聚合。我有什麼新的想法,產品創意,最終落地的東西都會放到這個小程式裡。

image.png

而分享功能非常的重要,當某一個功能或文章打動使用者的時候,能把這個小程式分享出去,就能帶來裂變傳播的效果。

全域性接管分享事件

而隨著功能越來越多,頁面越來越多,每一個頁面都需要新增分享的回撥方法嗎?

~~~javascript onShareAppMessage: function () { return { title: '分享的標題', path: '分享的頁面路徑' } }, ~~~

有沒有辦法能全域性統一接管分享呢?寫一次,所有頁面就都可以分享了。

能!

由於onShareAppMessage是一個函式,在使用者點選右上角...時觸發,或者<button open-type='share'>時觸發。所以我們只要在這之前替換掉這個函式就可以了。

通過wx.onAppRoute(cb)這個方法,我們可以監聽到微信小程式頁面棧的變化。

~~~javascript //在小程式啟動時新增全域性路由變化的監聽 onLaunch(){ wx.onAppRoute(()=>{ console.log('page stack changed'); console.log(getCurrentPages()); }); } ~~~

onAppRoute會在頁面棧改變後被觸發,這個時候通過getCurrentPages()方法,我們可以拿到小程式中全部的頁面棧。

陣列最後一個就是當前頁面

image.png

現在直接給當前頁面這個物件賦值onShareAppMessage即可

~~~javascript var pages = getCurrentPages(); var curPage = pages[pages.length-1];

curPage.onShareAppMessage=()=>{ return { title:"被接管了" } } ~~~

再分享時我們就會發現被接管了

image.png

獲取當前頁面的地址

page引數不傳的話,預設轉發出去就是當前頁面的地址。當然通過curPage.route也可以獲取該頁面地址。

~~~javascript var pages = getCurrentPages(); var curPage = pages[pages.length-1];

curPage.onShareAppMessage=()=>{ return { title:"被接管了", page:curPage.route } } ~~~

小技巧

如果就這樣分享出去,使用者開啟的時候,就會直接展示這個分享的頁面。直接返回,或者左滑螢幕,都會直接退出到聊天介面。使用者主動分享一次產生的裂變不容易,我希望這個分享帶來的價值最大化,讓接到分享的微信使用者看到更多頁面的話怎麼辦呢?

永遠先進首頁,首頁檢查啟動引數後再跳轉相關頁面

~~~javascript curPage.onShareAppMessage=()=>{ return { title:"被接管了", page:"/pages/home/home?url="+curPage.route } } ~~~


我叫大帥,一個程式

推薦閱讀(感謝掘友的鼓勵與支援🌹🌹🌹) - 這45道面試可能被問到的JS判斷題!你能答對幾道? 33贊 - CSS邊玩邊學,這五個遊戲讓你對CSS的掌握更進一步! 28贊 - 產品經理:你能不能用div給我畫條龍? 2471贊 - 三種前端實現VR全景看房的方案!說不定哪天就用得上! 2698贊