微信小程序全局分享轉發控制實現——從此無需頁面單獨配置


 關於支付寶全局自定義分享控制詳見:支付寶小程序的攜帶參數全局分享實現。

為什么要寫這篇文章?

微信小程序沒有全局分享配置,頁面開啟分享功能必須要在頁面中定義分享事件函數 onShareAppMessage 才可以。如果項目中對頁面分享的需求比較復雜點,那么默認的自定義分享會很麻煩的,而且還不一定能滿足我們的需求,因此全局自定義分享配置的實現就非常有必要了。

不僅僅能實現全局分享,還可以對不同頁面實現不同的分享配置

本例結合隱式路由,可實現全局控制所有頁面的分享配置,包括全局分享、頁面默認分享、頁面自定義分享,如下圖所示:

如上,一部分頁面可以進行自定義分享,另一部分進行頁面默認分享(相當於頁面開啟分享功能,但是沒有進行配置),其他大部分頁面都進行全局分享配置。

示例代碼:

 1 // app.js
 2 /**
 3  * 全局分享配置,頁面無需開啟分享
 4  * 使用隱式頁面函數進行頁面分享配置
 5  * 使用隱式路由獲取當前頁面路由,並根據路由來進行全局分享、自定義分享
 6  */
 7 ! function () {
 8   //獲取頁面配置並進行頁面分享配置
 9   var PageTmp = Page
10   Page = function (pageConfig) {
11     //1. 獲取當前頁面路由
12     let routerUrl = ""
13     wx.onAppRoute(function (res) {
14       //app.js中需要在隱式路由中才能用getCurrentPages()獲取到頁面路由
15       let pages = getCurrentPages(),        
16         view = pages[pages.length - 1];
17       routerUrl = view.route
18     })
19 
20     //2. 全局開啟分享配置
21     pageConfig = Object.assign({
22       onShareAppMessage: function () {
23         //根據不同路由設置不同分享內容(微信小程序分享自帶參數,如非特例,不需配置分享路徑)
24         let shareInfo={}
25         let noGlobalSharePages=["index/index"]
26         //全局分享配置,如部分頁面需要頁面默認分享或自定義分享可以單獨判斷處理
27         if (!routerUrl.includes(noGlobalSharePages)){
28           shareInfo = {
29             title: "自定義全局分享",
30             imageUrl: wx.getStorageSync("shareUrl")
31           }
32         }
33         return shareInfo
34       }
35     }, pageConfig);
36     // 配置頁面模板
37     PageTmp(pageConfig);
38   }
39 }();

如上,無需頁面開啟和配置,只需要在app.js中編寫以上代碼,即可對所有頁面進行自定義分享配置,從此無需再去頁面開啟、配置分享轉發。

注意事項:

1.本例中使用了 getCurrentPages() 函數獲取頁面路由,但是app.js中需要放在隱式路由 wx.onAppRoute() 的回調中才能獲取到;

2.使用本例方法,無需頁面中配置 onShareAppMessage() ,如頁面中配置分享事件函數,則會覆蓋全局分享。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM