关于消息推送服务的十问十答
近日小编受邀参与了开源中国高手问答栏目,收集到很多与推送相关的问题,也发现很多开发者都在使用消息推送服务,小编甚是欢喜。
相关阅读:关于移动消息推送,你了解多少?
随着移动互联时代进入下半场,寻找流量红利的突破口成为每个互联网人思考的命题。互联网的运营一切都是为了增长,毫无疑问,增长是运营的使命。
为了引出本文的主题,小编都上升到使命的高度了。
言归正传,消息推送服务承载着解决增长难题的重任,对于移动应用来说,消息推送服务已经成为“标配”,据相关数据显示,App集成的开发服务中,消息推送占比最高,且渗透率逐年递增。
消息推送虽然并不陌生,但围绕推送到达率、推送策略、心跳建设、技术选型等,大家还存在很多疑问。根据用户调研,小编整理了关于消息推送服务的十问十答,为大家揭开消息推送的神秘面纱。
1、Android系统和iOS系统的消息推送有何区别?
Android和iOS都从属于移动消息推送,基本上可以分为自建通道和厂商通道。
在自建通道上,Android和iOS所采用的技术手段都差不多,实现方式上可能略有差别,
在厂商通道上,由Android开源的特性,Google提供了自己的FireBase,而国内FireBase的支持情况并不好,所以每个厂商定制的Rom中都有自己的一套PUSH模块,像华为、小米、OPPO、VIVO、魅族等,都提供自己的推送SDK,而iOS系统由于是非开源的封闭系统,所以在厂商这块就只能采用苹果提供APNS。
2、如何能做到长连接保持率的同时,还省电省流量呢?
长连接的保持率和省电省流量,看上去两者是相悖的两个方向,如果一直保持长连接在线,那么在Android系统上肯定要进行各种进程保活,缩小心跳时间等操作,势必会造成会造成流量和电量的消耗。
其实推送是某一时刻的行为,可能一天之内,也就推送几条消息,大部分时间,推送其实是不做事情的,所以可以在以下方面做一些努力:
在建立长连接的过程中,我们尽量减少所要传输的数据,在首次建立的时候,传接口需要的数据,其他时候建立连接,对数据做一个diff,做增量传输,对传输的数据进行最大化的压缩,或者采用protobuf、flatbuffers等二进制传输协议,缩减连接或者心跳的数据包大小。
根据设备网络环境,动态调整心跳间隔时间,每个心跳包尽可能的小,不传输与心跳无关的数据等。
如果集成厂商通道,充分利用厂商通道传输能力做离线数据的触达,以及平衡好自有通道和厂商通道在实际中的使用场景。
另外不建议做进程保活机制,以及反复使用wake-lock机制,增加对设备的电量、流量等消耗。
3、如何保证数据和用户隐私安全?
在数据安全上,可以采用SSL和TLS等安全传输层协议,也可以使用更为轻量的秘钥协商协议,可以参考ECDH和ECDSA原理,自己实现加解密协议,可以防止中间人攻击,也可以节省推送成本。
在隐私安全上,要做好自身的风控策略,对隐私信息进行分类处理,对于设备信息的采集需要经用户授权,隐私授权后才可以采集,并做好缓存策略,尽量减少采集次数,严格禁止涉及公民个人用户隐私信息的采集。
4、第三方推送到达率普遍是多少?有什么手段可以确保高到达率?
第三方推送的在线到达率普遍都在99%左右。
提高到达率方面,一是要保证长连接的稳定,可以采用合适心跳探测,保证客户端和服务端的稳定链接,进而提高推送到达率;另外,可以使用消息回执(ACK)机制,客户端要在收到消息后发送ACK,对于没有收到客户端ACK消息标记其状态为未读,对未读消息进程重发或者等待下次端上进行连接。
5、第三方推送服务和自建如何选择?
可以结合自身业务的需要,从成本控制和产生收益的角度做出选择。
推送能力的建设是需要持续投入的,主要涵盖研发、运维、基础设施等方面,对于中小型公司来说,推送的成本相对是比较高的,所以初创业务可以选择第三方的推送服务,以便能够把更多精力和财力投入在核心业务的研发和运营上,保证业务高速迭代。另外第三方推送在一定推送规模内基本都有免费的额度,所以在成本上也可以节省开销。
对于业务已经有一定规模,有自身的盈利能力,并且现有第三方推送在业务或者成本上已经满足不了自身要求的情况下,可以建立自己的推送能力,以满足不断变化的业务的需要,如果推送服务做的好,也是自身一个可观的赢利点。
总结来说,自建推送系统还是用第三方推送,要根据自身产品和业务的特点权衡选择。
6、如何做到进程保活?
进程保活,主要分为两类:
一类是提升进程优先级。Android系统进程优先级被划分为前台进程、可见进程、服务进程、后台进程、空进程。常用的保活手段有启动前台服务,灭屏启动Activity,不同Android版本启动前台服务需要适配,主要是利用系统漏洞确保不会被用户感知。
另一类是进程被杀后重启,可以通过native层去处理。5.0以下使用fork产生的子进程和父进程通过管道互相监听,当系统杀主进程时,子进程有足够的时间将主进程拉起,从而实现保活。5.0以后采用进程组概念,杀进程时,直接杀死该进程组的所有进程,耗时大概在100ms左右,所以可以在以下方面做出改进:
进程状态监听,要求及时且不消耗过多资源,例如可以利用文件锁。短时间内启动进程,耗时越少越好。
tips:随着Android系统限制越来越严苛,保活也涉及很多兼容性问题,没有可以100%的保活方案,另外也不建议做进程保活,会增加设备资源消耗,影响用户体验。
7、如何实现千人千面推送?
个性化推送依赖于具体的用户画像,包括不限于对用户的年龄、性别、兴趣、爱好、职业、习惯等数据进行分析,采用合理的推荐算法,对用户进行分群或者标签化处理,建立用户或者标签与设备的映射关系,根据标签实现不同用户群体的推送。
8、沉默或卸载的用户是否能进行推送?
沉默用户是可以进行推送的,主要手段是借助厂商通道的推送能力进行离线推送,另外也可以通过应用间的激活进行召回,唤醒推送能力进行推送。卸载用户是没有办法进行推送的。
9、用户通知权限的开启与关闭对推送的影响是?一般厂商会默认关闭吗?
目前推送的主流形态是以通知的形式到达用户的端,通过用户的点击打开通知需要展示的页面,进而形成一个消息从下发->到达->展示->点击的一个闭环,从而达到引流和运营效果。所以通知栏关闭,就意味着通知无法展示,闭环就会被打破。
厂商的通知栏开关一般情况下都是关闭的,需要在App启动的过程中,自行判断,如果通知栏关闭,需要引导用户去打开通知栏开关。
10、使用第三方API推送开发量大吗?有什么难点?
第三方推送一般都会有比较详尽的集成开发和使用文档,并且在产品设计上会尽力考虑降低用户的集成和使用成本,所以对开发者来说,使用推送的开发工作量其实是很小的,按照相关文档操作就可以了,没有什么难点。
如果大家还有其他问题,欢迎随时与小编交流。
百度慧推限时免费,详情点击:https://cloud.baidu.com/product/spp.html

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
借github上韩国师傅的一个源码实例再次理解.htaccess的功效
今天翻了翻GitHub,很巧发现一个韩国师傅的实例;也是关于.htaccess的,就继续理解了一波;稍微修改了几行代码来理解一下;先来发出源码; 我们简单的审计;很明显,列出了禁止的后缀;但是很明显,这里没有禁用.htaccess;这里昨天的那片博客也已经讲的很明白,.htaccess是一个神器,我们可以篡改相关目录的php配置,导致解析出现我们遇期的效果;继续审计代码;首先一个if语句就ban掉了纯后缀的文件。例如(.htaccess);然后服务器创建临时文件;$name取得我们的原始文件名字;然后再以‘.’为分界点打断为数组,(这里我刚开始将其错看成了implode,怎么都说不通,太无语了);打断为数组之后删除最后一个元素; 这里要注意一下,虽然删除了最有一个元素,但是这里有个小坑,要看仔细,$ext是记录了被删除的内容,不是删除后的数组;这里本地复现这段代码;我们直接传入文件名; 同过复现我们可以看到,这里确实是的,$ext记录的是我们删除的后缀,而并不是我们删除后的数组;通过上面的实验效果我们可以看到数组第一个元素已经为空了所以反观代码下的empty($parts[0])也是达...
-
下一篇
SOFABoot 发布 v3.4.1 版本,基于 Spring Boot 的研发框架
优化 健康检查失败组件优先排列 提供健康检查失败终止应用进程选项 提供 IO 线程处理业务逻辑能力 Bug 修复 修复 SOFA runtime 关闭逻辑问题 修复 RPC 发布过程中 uniqueName 计算错误 修复在组件管理器关闭之前,应用程序关闭 升级 更新 SOFARPC 版本至 5.7.3 更新 fastjson 版本至 1.2.69 更新 gRPC 版本至 1.28.0 更新 protoc和protoc-java版本至 3.11.0 Optimize Provide option for processing biz logic in IO thread#658 Put components first whose health check result fail#656 Provide option for terminating application when health check fails#648 Bug fixes StandardSofaRuntimeManager#shutdown will cause the Spring context to b...
相关文章
文章评论
共有0条评论来说两句吧...