文档章节

关于消息推送服务的十问十答

百度慧推
 百度慧推
发布于 06/24 15:10
字数 2486
阅读 1.8W
收藏 30

精选30+云产品,助力企业轻松上云!>>>

近日小编受邀参与了开源中国高手问答栏目,收集到很多与推送相关的问题,也发现很多开发者都在使用消息推送服务,小编甚是欢喜。

相关阅读:关于移动消息推送,你了解多少?

随着移动互联时代进入下半场,寻找流量红利的突破口成为每个互联网人思考的命题。互联网的运营一切都是为了增长,毫无疑问,增长是运营的使命。

为了引出本文的主题,小编都上升到使命的高度了。

言归正传,消息推送服务承载着解决增长难题的重任,对于移动应用来说,消息推送服务已经成为“标配”,据相关数据显示,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

百度慧推

百度慧推

粉丝 9
博文 12
码字总数 7878
作品 0
海淀
私信 提问
加载中
此博客有 1 条评论,请先登录后再查看。
一个人,一个月,开发十款小程序,他是怎么做到的?

你是一条产品经理,现在要出一个大型需求的方案,你会怎么做? 没做过,找友商方案借(chao)鉴(xi)。 做过,把以前的方案拿来改一改。 你是一名自由开发者,接了一个商城小程序外包,你会...

知晓云
2019/08/23
32
0
哪种开源许可证最适合商业化?

dotNET跨平台
04/20
0
0
微信小程序将于 2017 年 1 月 9 日正式开放

今日(12 月 28 日)在 2017 微信公开课 Pro 大会上张小龙宣布微信小程序将于 2017 年 1 月 9 日正式开放。 会上,张小龙详细从以下几个方面详细介绍了微信小程序: (一)小程序的特性:无须...

凝小紫
2016/12/28
9.2K
61
十问十答 Ms-PL 许可证

dotNET跨平台
04/15
0
0
300人百度团圆红包团,分到537元!附最佳策略

现在对百度团圆红包以外的活动已经全然没有兴趣了! 集卡,拼死拼活集成了一堆重复卡!系统后台不批量放出稀缺卡,再努力也没有,比如头条的钻卡“万”、抖音的音符“咪”,后台不放出,努力...

非主号
2019/02/03
6
0

没有更多内容

加载失败,请刷新页面

加载更多

Free RTOS学习随笔(1),临界区代码

Free RTOS学习随笔(1),临界区代码 基本介绍 Free RTOS中临界区代码常用函数 任务级临界代码保护 调用方式 实现原理 中断级临界代码保护 调用方式 实现原理 基本介绍 临界区代码指的是那些...

osc_ho8dcqsx
6分钟前
5
0
STM32单片机驱动步进电机—简单篇

STM32单片机驱动步进电机(一) 驱动电机运动 软件:Keil5 设备:步进电机(17HS4401)、驱动器、单片机(STM32F103) 接线方式: 电机与驱动器:黑A+,绿A-,红B+,蓝B- 驱动器与单片机:M...

osc_2qah5avr
7分钟前
11
0
龙芯开源社区上线.NET主页

龙芯团队从2019年7 月份开始着手.NET Core的MIPS64支持研发,经过将近一年的研发,在2020年6月18日完成了里程碑性的工作,在github CoreCLR 仓库:https://github.com/gsvm/coreclr, 随后受...

osc_923iryp1
9分钟前
5
0
计算机组成原理笔记(二)

我的博客: https://www.luozhiyun.com/ 浮点数和定点数 我们先来看一个问题,在Chrome浏览器里面通过开发者工具,打开浏览器里的Console,在里面输入“0.3 + 0.6”: >>> 0.3 + 0.60.8999...

osc_1psr53ow
9分钟前
13
0
Vue PDF文件预览vue-pdf

最近做项目,遇到预览PDF这个功能,在网上找了找,大多推荐的是pdf.js,不过在Vue中还是想偷懒直接npm组件,最后找到了一个还不错的Vue-pdf 组件,GitHub地址:https://github.com/FranckFreiburge...

osc_1i3ltp99
10分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部