App push服务详解-综合概述(一)

近期在设计app push服务的整体迁移,之前对这块了解比较少,借着这个项目对push服务做了下整体的梳理,在这里就基本的知识点和一些技术实现做下总结和探讨。

1 什么是App push

不做过多解释了,就是我们日常看到的app推送消息,通常出现在通知栏、手机锁屏屏幕。 目的就是通过引人入胜的标题,来吸引用户的点击,进而增加日活、流量以及留存等。

2 推送通道类型

  • 厂商通道
  • 第三方推送服务
  • app自身长连接推送

2.1 厂商通道

厂商通道如名字所述,厂商有自己的服务器和对应的SDK,端内通过接入SDK来与厂商server建立连接,进行推送。 目前安卓的厂商通道主要是华为、小米、vivo、oppo等,ios的就比较统一,统一走苹果自己的厂商代理。

使用厂商通报的到达率会比较高,因为它不依赖用户对于app是否kill这个点。

2.2 第三方推送服务

大一点的第三方推送平台:个推、信鸽、BAT推送服务等。

这种一般就是某类专门的公司独立搭建一整套消息推送服务,包括客户端SDK、推送任务配置、用户上报、消息推送server、数据统计等一整套完善服务,上游业务只要接入SDK即可。

当手机上多个app使用同一个推送平台服务时,客户端集成的其实是一套SDK,同一设备上多App共享一个长连接,由当前设备上的最高优先级App维持连接和消息分发。但随着Android后台限制及厂商ROM限制,共享机制会影响Push到达率(如A维持长连接,无法给B分发消息)。同时,应用间跨进程通信也存在PR风险(如在VIVO上会提示XXX尝试启动XXX)。 因此很多第三方推送切换为应用独立长连接,每个应用有独立的push进程维持自己的连接,避免Push分发折损,提升到达率。

2.3 app自身长连接服务

这个思路就比较简单了,等于是自建一套从业务server到业务端的长连接。 但是实现成本较高,投入的研发人力会比较大,并且到达率和稳定性一般是没有厂商通道和第三方稳定的。

3 推送消息类型

3.1 透传消息

透传消息:透明传输消息。消息体的格式及内容通道不去过问,通道只传递消息,对消息不做处理;客户端收到消息后,由客户端决定如何处理消息(消息体可以是自定义消息体)。

接收push依赖 应用 存活。

3.2 通知消息

通知消息:通知栏消息是直接展示出来,相关的动作客户端无法捕获到(消息体为固定的消息格式)

接收push不依赖 应用存活。

3.3 双通道文本消息

这里说下,一般三方推送服务为了提升到达率都会集成各大厂商的SDK进行推送,所以会出现厂商通道+三方通道结合的消息类型,即为双通道文本消息,主要目的就是提高push到达率所设计的一种包括透传和通知的消息格式。

4 推送范围

  • 单播
    • 推送给某个人
  • 组播
    • 推送给指定的标签的一批设备
  • 广播
    • 向当前app下所有设备推送一条消息
  • 批量单播
    • 推送消息给批量设备

5 整体推送架构图

针对以上的推送,用一个数据流图来做下整体的串联,加深理解。

Alt text