如何设计一款稳定、好用、安全的推送SDK?

访客4年前关于黑客接单361

一款不变、易用、安详、小巧机动的推送SDK是怎么样的?本文将从“小”、“稳”、“好用”以及“安详”四个角度来详细叙述。

如何设计一款不变、好用、安详的推送SDK?

对付非技能身世的产物司理来说,假如溘然接到一个要“设计SDK”的活儿,其实并不容易。究竟,SDK是主要面向开拓者的,更像一个toD产物。那么,产物司理在设计SDK时,需要留意哪些点呢?换句话说,一款好的SDK应该具备哪些特性?本文将从“小”、“稳”、“好用”以及“安详”四个角度来详细叙述。

1. 小 1.1 65535限制

我们以一款好的推送SDK为例,那么首要需思量到SDK包体的小巧机动性。

为什么选择更小体积的包体?

对付商务人员来说,包体体积小,他们更容易接管。对付技能人员来说,他们在开拓产物时,普遍追求“代码少、成果全”,这是来自措施员的代码洁癖。

那么从代码层面来看,是因为系统有“65535限制”。

如何设计一款不变、好用、安详的推送SDK?

如上图(左)所示,措施最终会生成dex文件,dex文件主要由以下几部门构成:header(标头)、陆续串的ids(标识符列表)、data(数据区)以及link_data(静态链接文件中利用的数据)。

细看上图(右),它包括了一个method_ids_size字段,该字段的主要浸染是界说个数。按照谷歌的界说,uint是一个16位的short范例,最长长度是65535。假如将dex工程反编译,会生成许多 *** ali的文件,再去看 *** ali里的函数挪用(好比invoke direct {***} 函数名@BBB),会发明挪用的地点其实就是适才unit里界说的偏移量计较得出的。因此,这个函数地点最多也只能有65535个。

1.2 如何使包体体积变小

如何减小包体的体积,发起从以下几个方面思量:

(1)自研,不嵌套

在设计研发SDK时,不发起在SDK内嵌套一系列框架,譬喻三方 *** 框架、db框架或任务调治框架等。我们主张选择最焦点的一部门举办自主研发。

(2)代码优化

从算法层面,在结果沟通的环境下,可适当淘汰代码的行数;对付有默认赋值的变量不需要举办初始化赋值;选择符合的字符串拼接 *** ,发起利用StringBuilder要领拼接字符串,可以办理字符串频繁修改带来的内存耗损,也有利于淘汰包体体积巨细。

(3)追求实用,放弃完美

SDK包体该当追求实用性,以完善主成果为主,其他相对次要的部门可以适当淘汰时间或精神投入,放弃完美主义思维。

(4)代码夹杂

借助代码夹杂实现更小体积的包体,且不易被逆向。

1.3 省电省流量

省电省流量是“小”的另一个方面。SDK假如没有对流量和电量有严格的限制,不然会呈现手机发烫、高耗电提醒、流量挥霍、内置SDK APP难以上架等问题。

针对上述问题,我们可以配置通过Lock杀手,智能心跳、自界说协议、链路归并、按需活泼等 *** 尽大概地低落SDK对电量以及流量造成的耗损。

(1)Lock杀手:代码中WiFiLock、WakeLock等会强制叫醒APP,导致APP发生较大耗电量。在不影响成果的前提下,我们应只管淘汰可能不消该类锁。

(2)智能心跳:应按照差异的运营商、 *** 状态等,选择差异的心跳计策,而且按照差异的应用场景摸索心跳的更大界线,只管耽误心跳周期,淘汰电量和 *** 的耗损。

(3)自界说协议:市场上常用的json、xml、甚至PB协议,都有较量好的兼容扩展性,但同样也带来了空间挥霍的问题,自界说协议可以充实操作空间,准确操作每一个byte甚至bit,极简化封装,承载更大的信息量,淘汰流量和电量挥霍。

(4)链路归并:当一个设备有多个APP的推送链路同时活泼时,我们会运用归并链路技能,将利用同一款SDK的 APP 之间的长毗连链路举办归并,淘汰流量电量的挥霍。

2. 稳 2.1 晋升不变性

在设计SDK时,还要思量到SDK的利用不变性。不然在实际应用中,大概会碰着ANR、OOM、Crash、内存泄露、闪退等棘手的问题,我们需要通过一连的迭代和优化来将错误最小化。

(1)做好代码打点

除了借助SVN、GIT等东西做好代码托管外,还需遵循必然的代码类型,借助雷同gerrit等东西举办代码review,利用verify流程。在担保呆板找不到问题的前提下,再用人眼去分辨是否切合业务逻辑。

(2)自动化测试

自动化测试可以大幅晋升回归测试的效率,很是适合火速的开拓进程。另外,自动化测试可以替代大量的手工机器反复性操纵,测试工程师可以把更多的时间花在更全面的用例设计和新成果测试上。

(3)运用代码模块化等小能力

相关文章

未来直播将会呈现的三种模式

未来直播将会呈现的三种模式

直播将来将成为企业的营销标配,企业需要从营销推广和生意业务方法两个方面深入挖掘好直播的代价。文章预测了直播将来成长的三种模式并别离对其举办了梳理阐明,与各人分享。 疫情的敦促,直播成为当前许多企业都...

toB产品设计前三问+产品设计五部曲

toB产品设计前三问+产品设计五部曲

编辑导语:to B产物在筹划设计前需要思量哪些工作呢?又有哪些留意事项呢?本文作者团结自身5年的产物事情经验,通过复盘本身多年的事情心得,总结了一些履历和要领论,最终为我们分享了toB产物设计前的三问...

产品设计:如何针对月收入在1000元以下的用户设计一款App?

产品设计:如何针对月收入在1000元以下的用户设计一款App?

编辑导读:假如要求你设计一款针对月收入在1000元以下的用户的App,你会怎么做?本文作者依据本身项目实践的详细案例,结适用户体验五要素对这个笔试题展开了阐明思考,并分享了本身的设计方案,一起来看看~...

写好文案,懂100个技巧,不如弄清3个本质问题

写好文案,懂100个技巧,不如弄清3个本质问题

编辑导读:为什么有许多的人花了大量的钱去进修了各类文案能力,可是结果依旧是差强人意呢?因为,你在写文案的时候,忽略了它的本质问题。本文作者对文案的3个本质问题举办了梳理阐明,一起来看看~ 关于文案的...

拼多多与阿里叫板PK的背后,运营人要知道的三个“冷知识”

拼多多与阿里叫板PK的背后,运营人要知道的三个“冷知识”

作为互联网电商巨头之一,拼多多有很多处所值得我们进修。本文将从用户、产物代价和增长这三方面的“冷常识”,探讨互联网思维的底层逻辑。 一直以来,互联网思维这个名词老是能等闲地成为被遍及接头和研究的工具...

基于训练营模式,“场景”和“时间”如何决定“内容”?

基于训练营模式,“场景”和“时间”如何决定“内容”?

本文内容是作者基于今朝日常事情中的思考,文章对“场景”、“时间”和“内容”这三者之间的干系展开了叙述,但愿能辅佐运营同学在运营思维上有必然的生长。 基于练习营的日常思考: 近期在整理本身思路的时候,...