接入消息推送组件后,客户端通过使用 mPaaS 移动网关服务,调用远程过程调用(Remote Procedure Call,简称 RPC)网关进行设备注册、用户绑定以及厂商通道的关系绑定,实现基于设备维度和用户维度的消息推送。不同的设备平台对应的消息推送流程会有所差异,下面将介绍不同设备平台在 RPC 接入方式下的推送处理流程。
在了解推送流程之前,需要先了解消息推送涉及的一些基本概念。
基本概念
设备标识 (token)
消息推送组件为每个客户端设备分配一个唯一标识,并根据该标识来确定消息推送的目标:
Android 设备使用自建长连接进行消息推送。
iOS 设备使用苹果提供的 APNs 服务进行消息推送。
推送模式
消息推送组件提供以下推送模式:
指定设备标识的推送
指定用户标识的推送
不指定任何标识的群发
说明无论采用哪种模式,最终在系统内部都会映射成设备标识。指定用户标识的推送是移动推送服务为方便与用户的业务系统对接而提供的推送方式。由于最终要映射成设备标识,需要应用开发者对用户标识和设备标识进行绑定。推荐在用户登录时,进行绑定,在用户登出时,进行解绑。
厂商通道推送
厂商通道推送是指厂商自己的推送,能够保证高到达率。在调用 push 的
init
进行初始化过程中,会分别向 mPaaS 和厂商推送平台申请设备标识,在回调中分别返回 mPaaS 的设备标识和厂商的设备标识信息。若要使用厂商通道推送,需要等待以上两个设备标识返回后,再调用 report 接口将两个设备标识上传到移动推送核心,此时会将两者关联起来,完成上述操作后才能真正使用厂商的设备标识,否则就是普通的 mPaaS 推送。
处理流程
消息推送服务由两个后端系统组成:
移动推送核心(Pushcore):负责处理业务逻辑以及向开发者提供 API 接口。
移动推送网关(Mcometgw):负责保持与 Android 设备的长连接。
在请求设备标识 (token) 部分,若是小米、华为或其他已经接入厂商推送平台的手机,还会向厂商推送平台请求设备标识,需要等待两个设备标识返回,通过调用 report 接口将两者绑定,才能使用厂商的推送通道。普通手机只需要使用 mPaaS 返回的设备标识。
了解不同设备平台对应的消息推送接入流程:
中国内地安卓设备
客户端使用 RPC SDK 经由 RPC 网关直接与移动推送核心进行交互。针对中国内地的安卓设备,移动推送服务提供了自建网关。整个流程如下图所示:
其中:
应用启动时,客户端同移动推送网关建立长链接,如果客户端建链信息中未携带设备标识,移动推送网关将下发设备标识。
如果用户开启小米、华为等等厂商通道,且客户端属于这些厂商通道的机型,那么这些厂商通道的SDK会进行初始化动作,与对应厂商的推送网关建立长连接服务并获取厂商通道设备标识。
获取厂商通道设备标识后,客户端调用设备上报 RPC 接口,上报厂商通道设备信息。
应用用户在客户端上发起登录。
服务端收到用户登录请求,用户登录成功,可以选择在此时向移动推送核心发起用户和设备绑定请求。
服务端发起推送请求。
移动推送核心获取到推送请求,移动推送核心根据推送类型进行区分:
若按设备推送,则直接调用移动推送网关下发消息。
若按用户推送,则根据请求中的用户标识获取与之绑定的设备标识,然后调用移动推送网关下发消息。
移动推送网关下发消息。
消息下发成功后,客户端会向移动推送网关确认已收到消息,如果用户配置了回调接口,移动推送核心会给服务端回执。
客户端在用户主动退出登录时调用解绑 RPC 接口。
苹果及国外安卓设备
国外安卓的推送网关采用谷歌的 GCM/FCM 服务,苹果的推送网关采用苹果的 APNs 服务,此处以苹果设备为例。
客户端使用 RPC 经由 RPC 网关直接与移动推送核心进行交互。整个流程如下图所示:
其中:
客户端获取苹果下发的设备标识。
客户端调用上报设备 RPC 接口经由 RPC 网关向移动推送核心上报设备信息。
应用用户在客户端上发起登录。
用户登录成功后,可以选择在此时调用绑定 RPC 接口经由 RPC 网关向移动推送核心发起用户和设备绑定请求。
服务端向移动推送核心发起推送请求。
移动推送核心获取到推送请求,并根据推送类型进行区分:
若按设备推送,则直接调用 APNs 服务下发消息。
若按用户推送,则根据请求中的用户标识获取与之绑定设备标识,然后调用 APNs 服务下发消息。
消息下发成功后,客户端会向移动推送核心确认已收到消息,如果用户配置了回调接口,移动推送核心会给服务端回执。