個推消息推送SDK技術沉澱(3):如何保障推送SDK的可用性和安全性?

1 好用

消息推送SDK的易用性可以從下面幾個方面考慮:

(1)接入簡單:接入SDK時有集成demo直接可以運行,且接入文檔清晰、步驟簡單,最好能實現一鍵集成。

(2)保持核心優勢:關於推送,我們主要考慮及時性、到達率、穩定性和準確性。例如,新聞媒體類APP對推送的及時性要求較高;通知類推送(如轉賬信息)會特別注重消息的到達率;穩定性指的是要保證推送SDK在不同環境下的正常運行,尤其是11.11等高併發場景;準確性主要針對廣告營銷類推送,需要在合適的時間、合適的地點和合適的場景把合適的內容推送給合適的人。其中,關於如何保證穩定性,可以從多線路、多IDC、熱備份等角度考慮。 多線路調整:例如預埋三線域名,做一些輪詢策略,防止域名被劫持。 IDC設置:除了域名被劫持外,還可能遇到網絡攻擊,物理性損壞的情況。設置多IDC一方面是爲了實現分流,另一方面也降低了風險。 熱備份:系統處於正常運轉狀態下的備份,一旦系統出現問題,可以快速恢復。

(3)多樣化需求通過豐富的畫像標籤,對用戶進行場景化的智能推送,滿足用戶的多樣化需求。

(4)策略可控:我們還提供靜默時間、推送控量、短信補量、定時展示等附加功能,滿足客戶的實際使用場景。

 

2 安全

好的消息推送SDK

SDK開發過程中,我們還需要注意安全性。安全性不僅僅代表網絡數據交互的安全、本地數據存儲的安全,也涉及到 SDK 的加固、混淆、第三方安全軟件審覈等。

其中,我們重點講解SDK的加固。目前安卓平臺SDK絕大部分都是Java語言編寫,容易被反編譯。SDK如果只是進行了簡單的混淆,很容易被窺探到內部實現細節,此外還可能存在SDK被二次打包、植入惡意廣告等現象。因此,我們需要對SDK進行加固,以提升安全性。

如上圖所示,SDK的加固主要是Java層面和so層面的操作。Java層面可以進行SSR IR指令轉換或者做Java2C處理,把實現細節放入native中;so層面可以做一些扁平化、虛假控制等來混淆代碼,也可以通過指令替換、指令跳轉邏輯來增加逆向難度。此外,也可以通過常量字符串加密加固SDK,這是目前較爲簡單實用的一種方式。

 

前文回顧:

個推消息推送SDK技術沉澱(1):如何使SDK包體體積變小?如何實現省電省流量?

個推消息推送SDK技術沉澱(2):提升推送SDK穩定性和兼容性的方法

 

作者:個推高級研發總監 公瑾

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章