解鎖自定義分享功能新姿勢

飛雪祭發表於2019-03-02

前言

現在分享功能一般是app的常用功能了,在開發分享功能時,我們常常使用的是整合友盟或者ShareSDK第三方工具包或者使用官方的分享方法,但是這些多多少少會出現一些弊端。如下:

  • 不需要那麼多的分享功能,jar包過大,導致app體積變大
  • 第三方工具包往往會收集一些使用者資料,還有一些網路請求
  • 第三方也會制定自己的規則,有時候功能不能滿足產品的特殊需求
  • 直接使用官方分享程式碼的話,程式碼過於鬆散,使用不方便,不易維護

思考怎麼解決問題呢?

既然第三方的工具類使用方便,官方程式碼鬆散。其實第三方的工具包也是封裝的官方分享的程式碼,那我們不妨自己也封裝一個符合自己專案,一個更加輕量級且使用方便的純綠色、無汙染、無新增劑的工具呢?那下面就開始介紹自定義封裝的姿勢了。

分享使用的姿勢

解鎖自定義分享功能新姿勢

沒錯,就是你喜歡的鏈式呼叫,幾行程式碼搞定,是不是so easy,so happy呢?

一. 準備工作

1. 新增微信OpenSdk的依賴 `com.tencent.mm.opensdk:wechat-sdk-android-without-mta:1.4.0`。

2. 建立一個分享平臺的列舉類,這裡只列出了微信朋友圈和微信好友的,如需更多,可以自己新增。

解鎖自定義分享功能新姿勢

使用列舉的好處:規定了傳入值的範圍,避免傳入規定不需要的值,將錯誤停留在編譯期的檢查。如果用int型常量表示的話,那麼這個引數只要是int型別的,編譯即可通過,增加了bug的可能性。

3. 建立一個分享型別的抽象基類,分享圖片、分享網頁都繼承該類,方便呼叫時使用多型。

解鎖自定義分享功能新姿勢

4. 建立分享圖片類和分享網頁類分別繼承ShareObject類

解鎖自定義分享功能新姿勢
解鎖自定義分享功能新姿勢

二. 封裝ShareAPI,提供內部實現功能的方法,呼叫微信官方的分享方法,這是實現功能的核心類。

解鎖自定義分享功能新姿勢
解鎖自定義分享功能新姿勢
解鎖自定義分享功能新姿勢

三. 提供給外層設定和呼叫的方法,通過share()方法觸發分享動作

解鎖自定義分享功能新姿勢

四. 使用單例模式,拿到之前設定的ShareListener物件,完成分享回撥類和ShareListener之間的通訊

分享出去後,我們需要接收到微信分享的回撥,才能做相關的業務處理操作。因為微信分享需要在一個指定的WXEntryActivity類裡面接收到回撥訊息,而有時候我們要通過文章id來做一些相關的業務處理,這時候就需要實現兩個Activity之間的通訊,這裡我提供的方式是通過單例去實現通訊

解鎖自定義分享功能新姿勢
解鎖自定義分享功能新姿勢

五. 接下來就可以直接分享使用了

直接使用開始介紹的那個分享姿勢就可以完成分享了。

六.最後

下面附上原始碼:github.com/xuerui1993/…
由於本人能力有限,如有什麼用的不當的地方,請大家見諒和指正。

相關文章