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

时间:2024-05-19 14:34:06

一个好的推送SDK应该具备稳定、易用、安全、小巧灵活等特点。个推作为国内第三方推送市场的早期进入者,一直致力于为开发者提供高效稳定的推送SDK。经过多年的打磨和创新,个推沉淀了丰厚的技术经验。这期文章将从“稳”字着手,与大家分享如何提升SDK的稳定性和兼容性。

1 稳定性

在实际应用中,开发者可能会遇到ANR、OOM、Crash、内存泄露、闪退等棘手的问题,我们需要通过持续的迭代和优化来将错误最小化。提升消息推送SDK稳定性的方法如下:

(1)做好代码管理除了借助SVN、GIT等工具做好代码托管外,开发者还需遵循一定的代码规范,借助类似gerrit等工具进行代码review,使用verify流程。在保证机器找不到问题的前提下,再用人眼去辨别是否符合业务逻辑。

(2)自动化测试:自动化测试可以大幅提升回归测试的效率,非常适合敏捷的开发过程。此外,自动化测试可以替代大量的手工机械重复性操作,测试工程师可以把更多的时间花在更全面的用例设计和新功能测试上。

(3)运用代码模块化小技巧代码模块化能以最少的模块、零部件,更快速地满足更多的个性化需求。异常处理可以提高系统的容错性,让程序更加稳定。代码检测能及时发现程序中的缺陷和错误,比如检测内存是否泄露,是否有安全漏洞等,保证代码质量。

(4)线上灰度:实际场景中,我们很难去覆盖所有的环境,例如机型、网络等,需要通过线上用户的反馈去验证代码的健壮性。因此在产品大规模推向用户之前,我们需要进行少量的真实用户测试,即灰度上线来帮助减少风险。

(5)日志系统:系统有问题是必然的,在尽量保持系统稳定的前提下,要考虑容错性。当问题发生时,需要第一时间以最快的速度排查,因此需要有一套完整的日志系统。此外,平时我们也可以通过日志系统的拨测检测系统的健壮性,可以在用户反馈之前及时发现并解决问题。

 

2  兼容性

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

兼容性也是保证SDK稳定性的一个重要条件,提升SDK的兼容性,可以考虑以下几个方面:   

(1)接口兼容每次版本更新后,对外接口要尽可能保持不变。对于改动较大的接口,可以使用 @Deprecated 注解对老接口进行标记,并且做新接口调用的兼容,而不是直接删除老接口。

(2)主键兼容:当主键发生变更(例如去掉service、provider)时,部分老的安卓系统会有组件缓存,运行时直接告知“类”找不到。建议在AndroidManifest中保留声明,且对应“类”进行代码空实现,以减少发生crash的概率。

(3)安卓系统兼容:可使用Build.VERSION.SDK_INT做API区分。

(4)真机兼容:可以借助云测等平台进行兼容性测试。

 

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

 

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