个推消息推送SDK技术沉淀(3):如何保障推送SDK的可用性和安全性?

1 好用

消息推送SDK的易用性可以从下面几个方面考虑:

(1)接入简单:接入SDK时有集成demo直接可以运行,且接入文档清晰、步骤简单,最好能实现一键集成。

(2)保持核心优势:关于推送,我们主要考虑及时性、到达率、稳定性和准确性。例如,新闻媒体类APP对推送的及时性要求较高;通知类推送(如转账信息)会特别注重消息的到达率;稳定性指的是要保证推送SDK在不同环境下的正常运行,尤其是11.11等高并发场景;准确性主要针对广告营销类推送,需要在合适的时间、合适的地点和合适的场景把合适的内容推送给合适的人。其中,关于如何保证稳定性,可以从多线路、多IDC、热备份等角度考虑。 多线路调整:例如预埋三线域名,做一些轮询策略,防止域名被劫持。 IDC设置:除了域名被劫持外,还可能遇到网络攻击,物理性损坏的情况。设置多IDC一方面是为了实现分流,另一方面也降低了风险。 热备份:系统处于正常运转状态下的备份,一旦系统出现问题,可以快速恢复。

(3)多样化需求通过丰富的画像标签,对用户进行场景化的智能推送,满足用户的多样化需求。

(4)策略可控:我们还提供静默时间、推送控量、短信补量、定时展示等附加功能,满足客户的实际使用场景。

 

2 安全

个推消息推送SDK技术沉淀(3):如何保障推送SDK的可用性和安全性?_第1张图片

SDK开发过程中,我们还需要注意安全性。安全性不仅仅代表网络数据交互的安全、本地数据存储的安全,也涉及到 SDK 的加固、混淆、第三方安全软件审核等。

其中,我们重点讲解SDK的加固。目前安卓平台SDK绝大部分都是Java语言编写,容易被反编译。SDK如果只是进行了简单的混淆,很容易被窥探到内部实现细节,此外还可能存在SDK被二次打包、植入恶意广告等现象。因此,我们需要对SDK进行加固,以提升安全性。

如上图所示,SDK的加固主要是Java层面和so层面的操作。Java层面可以进行SSR IR指令转换或者做Java2C处理,把实现细节放入native中;so层面可以做一些扁平化、虚假控制等来混淆代码,也可以通过指令替换、指令跳转逻辑来增加逆向难度。此外,也可以通过常量字符串加密加固SDK,这是目前较为简单实用的一种方式。

 

前文回顾:

个推消息推送SDK技术沉淀(1):如何使SDK包体体积变小?如何实现省电省流量?

个推消息推送SDK技术沉淀(2):提升推送SDK稳定性和兼容性的方法

 

作者:个推高级研发总监 公瑾

你可能感兴趣的:(消息推送)