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

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

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

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

  1. SSM项目使用GoEasy 实现web消息推送服务

      一.背景 之前项目需要做一个推送功能,最开始我用websocket实现我的功能.使用websocket的好处是免费自主开发,但是有几个问题:1)浏览器的兼容问题,尤其是低版本的ie:2)因为是推送 ...

  2. java连接imserver_java后端IM消息推送服务开发——协议

    最近在一家saas企业使用Mqtt开发IM消息推送服务,把开发中的一些问题记录下来,项目仍在商用中,完整的消息服务包括4个模块---协议protocol,信令Signal,规则Rule,状态Statu ...

  3. Worktile中百万级实时消息推送服务的实现

    Worktile中百万级实时消息推送服务的实现 出自:http://blog.jobbole.com/81125/ 转载于:https://www.cnblogs.com/ribavnu/p/4531 ...

  4. 消息推送技术干货:美团实时消息推送服务的技术演进之路

    本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...

  5. Worktile中的实时消息推送服务实现

    在团队协同工具worktile的使用过程中,你会发现无论是右上角的消息通知,还是在任务面板中拖动任务,还有用户的在线状态,都是实时刷新.Worktile中的推送服务是采用的是基于xmpp协议.erla ...

  6. Worktile 中百万级实时消息推送服务的实现

    Worktile 中百万级实时消息推送服务的实现 转自:http://www.360doc.com/content/15/0907/19/1073512_497529854.shtml 这是一个创建于 ...

  7. app消息推送服务器端,系统服务:APP消息推送服务

    APP消息推送服务开通方法 在云表官网-管理控制台中,选择要开通APP消息推送服务的服务器,然后选择要开通APP消息推送服务的应用空间,点击对应应用空间的"应用空间管理". 在进入 ...

  8. 苹果消息推送服务教程:第二部分(共2部分)

    这篇文章还可以在这里找到 英语 Create a simple chat app with Apple Push Notification Services! 这个教程的原作者是Matthijs Ho ...

  9. 苹果消息推送服务教程:第一二部分(共2部分)

    苹果消息推送服务教程:第一部分(共2部分) 转自 http://www.raywenderlich.com/zh-hans/24732/苹果消息推送服务教程:第一部分(共2部分) 这是iOS教程团队的 ...

最新文章

  1. mysql setup choose_1.MySQL安装、启动、登录、重置密码、卸载
  2. ARM MOV指令对立即数的要求
  3. 2021研发效能实践案例征集大赛
  4. 使用FakeAsync对Angular异步代码进行单元测试
  5. Wannafly2016-12-27 SPOJ-INTSUB 数学
  6. 第一百三十一节,JavaScript,封装库--CSS
  7. 锐界机器人_每72秒就有一辆锐界驶下生产线
  8. caj文件打不开显示内存不足_U盘能显示文件大小但打开没有任何文件 - 卡饭网...
  9. Python返回列表的中位数
  10. AI Arena:Paradigm领投的NFT AI竞技场
  11. Expert C Programming 阅读笔记(CH2)
  12. 计算机专业的学生注意IT 培训的7 大陷阱
  13. 微信jssdk已无力吐槽
  14. 如何配置一个高效、漂亮、爱不释手的终端?
  15. Oracle建表——图书表
  16. 物联网通信技术原理第5章 移动通信技术
  17. 夜来风雨声,“路由协议”知多少?
  18. 数字IC秋招---笔试记录
  19. 踩过的坑——MySQL删除索引要慎重
  20. 【公式输入】 latex和markdown支持的公式写法整理

热门文章

  1. Java Logging之JUL系列——LogRecord
  2. java上传并压缩图片(等比例压缩或者原尺寸压缩)
  3. 哥哥教你学嵌入式 之 智芯科技 开发板 Z20K11x系列 教程(一)
  4. 嫁人就嫁程序猿——钱多话少死的早!很励志。。。
  5. 王者荣耀转区仅显示可转移服务器,王者荣耀角色迁移是什么 怎么转区
  6. Simulink仿真电路具体操作
  7. 华为p50鸿蒙系统手机价格,华为P50系列屏幕、镜头、芯片、价格全曝光,预装鸿蒙系统?...
  8. webpack 降级
  9. BIM咨询服务合同示范文本(直接套用)
  10. [转贴]李雅轩杨式太极拳精论