首页 » SEO优化 » phppb协定demo技巧_若何设计一款稳定好用安然的推送SDK

phppb协定demo技巧_若何设计一款稳定好用安然的推送SDK

duote123 2024-11-10 0

扫一扫用手机浏览

文章目录 [+]

对付非技能出身的产品经理来说,如果溘然接到一个要“设计SDK”的活儿,实在并不随意马虎。
毕竟,SDK是紧张面向开拓者的,更像一个toD产品。
那么,产品经理在设计SDK时,须要把稳哪些点呢?换句话说,一款好的SDK该当具备哪些特性?本文将从“小”、“稳”、“好用”以及“安全”四个角度来详细阐述。

1. 小1.1 65535限定

我们以一款好的推送SDK为例,那么紧张需考虑到SDK包体的小巧灵巧性。

phppb协定demo技巧_若何设计一款稳定好用安然的推送SDK

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

phppb协定demo技巧_若何设计一款稳定好用安然的推送SDK
(图片来自网络侵删)

对付商务职员来说,包体体积小,他们更随意马虎接管。
对付技能职员来说,他们在开拓产品时,普遍追求“代码少、功能全”,这是来自程序员的代码洁癖。

那么从代码层面来看,是由于系统有“65535限定”。

如上图(左)所示,程序终极会天生dex文件,dex文件紧张由以下几部分组成:header(标头)、持续串的ids(标识符列表)、data(数据区)以及link_data(静态链接文件中利用的数据)。

细看上图(右),它包含了一个method_ids_size字段,该字段的紧张浸染是定义个数。
根据谷歌的定义,uint是一个16位的short类型,最长长度是65535。
如果将dex工程反编译,会天生很多smali的文件,再去看smali里的函数调用(比如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)利用代码模块化等小技巧

代码模块化能以最少的模块、零部件,更快速地知足更多的个性化需求。
非常处理可以提高系统的容错性,让程序更加稳定。
代码检测能及时创造程序中的毛病和缺点,比如检测内存是否透露,是否有安全漏洞等,担保代码质量。

(4)线上灰度

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

(5)日志系统

系统有问题是一定的,在只管即便保持系统稳定的条件下,要考虑容错性。
当问题发生时,须要第一韶光以最快的速率排查,因此须要有一套完全的日志系统。
此外,平时我们也可以通过日志系统的拨测检测系统的健壮性,可以在用户反馈之前及时创造并办理问题。

2.2 兼容性

兼容性也是担保SDK稳定性的一个主要条件,紧张考虑以下几个方面:

(1)接口兼容

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

(2)主键兼容

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

(3)安卓系统兼容

可利用Build.VERSION.SDK_INT做API区分。

(4)真机兼容

可以借助云测等平台进行兼容性测试。

3. 好用

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

(1)接入大略

接入SDK时有集成demo直接可以运行,且接入文档清晰、步骤大略,最好能实现一键集成。

(2)保持核心上风

一款好的推送SDK,我们紧张考虑及时性、到达率、稳定性和准确性。

例如:新闻媒体类APP对推送的及时性哀求较高;关照类推送(如转账信息)会特殊看重的到达率;稳定性指的是要担保推送SDK在不同环境下的正常运行,尤其是11.11等高并发场景;准确性紧张针对广告营销类推送,须要在得当的韶光、得当的地点和得当的场景把得当的内容推送给得当的人。
个中,关于如何担保稳定性,可以从多线路、多IDC、热备份等角度考虑。

①多线路调度:例如预埋三线域名,做一些轮询策略,防止域名被挟制。

②多IDC设置:除了域名被挟制外,还可能碰着网络攻击,物理性破坏的情形。
设置多IDC一方面是为了实现分流,另一方面也降落了风险。

③热备份:系统处于正常运转状态下的备份,一旦系统涌现问题,可以快速规复。

(3)多样化需求

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

(4)策略可控

我们还供应静默韶光、推送控量、短信补量、定时展示等附加功能,知足客户的实际利用场景。

4. 安全

SDK设计开拓过程中,我们还须要把稳安全性。
安全性不仅仅代表网络数据交互的安全、本地数据存储的安全,也涉及到 SDK 的加固、稠浊、第三方安全软件审核等。

个中,我们重点讲解SDK的加固。
目前安卓平台SDK绝大部分都是Java措辞编写,随意马虎被反编译。
SDK如果只是进行了大略的稠浊,很随意马虎被窥伺到内部实现细节,此外还可能存在SDK被二次打包、植入恶意广告等征象。
因此,我们须要对SDK进行加固,以提升安全性。

如上图所示,SDK的加固紧张是Java层面和so层面的操作。
Java层面可以进行SSR IR指令转换或者做Java2C处理,把实现细节放入native中;so层面可以做一些扁平化、虚假掌握等来稠浊代码,也可以通过指令更换、指令跳转逻辑来增加逆向难度。
此外,也可以通过常量字符串加密加固SDK,这是目前较为大略实用的一种办法。

现在看来,要设计开拓一款好的SDK最难的还是如何让自己设计的SDK在繁芜的环境下稳定运行,这须要我们对 SDK 的架构有比较清晰的认知,并不断迭代和优化。

那么以上提到的四点,也是各位产品经理和开拓者须要把稳的,希望对大家有所帮助。

作者:叶新江,个推CTO

本文由 @个推 原创发布于大家都是产品经理,未经容许,禁止转载。

题图来自 Unsplash,基于 CC0 协议

标签:

相关文章

繁体字文化的传承与发展_以台湾为例

繁体字,作为中华文明的重要载体,承载着中华民族悠久的历史文化。近年来,随着简体字的普及,繁体字的使用范围逐渐缩小。在台湾,繁体字依...

SEO优化 2024-12-28 阅读0 评论0

红包协议解密,介绍数字货币红包的奥秘

随着互联网技术的飞速发展,数字货币红包作为一种新兴的支付方式,已经逐渐渗透到了我们的日常生活中。红包协议作为一种加密技术,为数字货...

SEO优化 2024-12-28 阅读0 评论0

箱函数在R语言中的应用及其优势

箱函数,作为一种强大的数据分析工具,在R语言中有着广泛的应用。箱函数能够有效地展示数据的分布情况,对异常值进行识别和剔除,从而为后...

SEO优化 2024-12-28 阅读0 评论0

IT面板接线,介绍数据中心的神经中枢

在当今信息时代,数据中心已成为企业、政府机构和个人不可或缺的“神经中枢”。IT面板作为数据中心的核心设备之一,其接线质量直接关系到...

SEO优化 2024-12-28 阅读0 评论0

精通语言的奥秘,跨越沟通的桥梁

语言是人类沟通的桥梁,是表达思想、传递信息的工具。精通语言意味着在沟通中游刃有余,能够准确、高效地表达自己。究竟如何才能精通语言呢...

SEO优化 2024-12-28 阅读0 评论0