全部产品

推送流程

更新时间:2020-10-23 09:34:21

本文介绍 MPS 的推送处理流程。

基本概念

  • 设备标识 (token) 消息推送组件为每个客户端设备分配一个唯一标识,并根据该标识来确定消息推送的目标:

    • Android 设备使用自建长连接进行消息推送。
    • iOS 设备使用苹果提供的 APNs 服务进行消息推送。
  • 推送模式
    消息推送组件提供以下推送模式:

    • 指定设备标识的推送
    • 指定用户标识的推送
    • 不指定任何标识的群发
      说明:无论采用哪种模式,最终在系统内部都会映射成设备标识。指定用户标识的推送是移动推送服务为方便与用户的业务系统对接而提供的推送方式。由于最终要映射成设备标识,需要应用开发者对用户标识和设备标识进行绑定。推荐在用户登录时,进行绑定,在用户登出时,进行解绑。
  • 第三方推送
    第三方推送是指厂商自己的推送,能够保证高到达率。在调用 push 的 init 进行初始化过程中,会分别向 mPaaS 和第三方平台申请设备标识,在回调中分别返回 mPaaS 的设备标识和第三方的设备标识信息。

    若要使用第三方推送,需要等待以上两个设备标识返回后,再调用 report 接口将两个设备标识上传到移动推送核心,此时会将两者关联起来,完成上述操作后才能真正使用第三方的设备标识,否则就是普通的 mPaaS 推送。

处理流程

消息推送服务由两个后端系统组成:

  • 移动推送核心(Pushcore):负责处理业务逻辑以及向开发者提供 API 接口。
  • 移动推送网关(Mcometgw):负责保持与 Android 设备的长连接。
重要:在请求设备标识 (token) 部分,若是小米、华为或其他已经接入厂商推送平台的手机,还会向第三方平台请求设备标识,需要等待两个设备标识返回,通过调用 report 接口将两者绑定,才能使用厂商的推送通道。普通手机只需要使用 mPaaS 返回的设备标识。

了解不同设备平台对应的消息推送接入流程:

中国大陆安卓设备

客户端使用 RPC SDK 经由 RPC 网关直接与移动推送核心进行交互。针对国内安卓设备,移动推送服务提供了自建网关。整个流程如下图所示:

国内安卓RPC接入方案

其中:

  • 应用启动时,客户端同移动推送网关建立长链接,如果客户端建链信息中未携带设备标识,移动推送网关将下发设备标识。
  • 如果用户开启小米、华为等等三方渠道,且客户端属于这些三方渠道的机型,那么这些三方渠道的SDK会进行初始化动作,与对应厂商的推送网关建立长连接服务并获取三方渠道设备标识。
  • 获取三方渠道设备标识后,客户端调用设备上报 RPC 接口,上报三方渠道设备信息。
  • 应用用户在客户端上发起登录。
  • 服务端收到用户登录请求,用户登录成功,可以选择在此时向移动推送核心发起用户和设备绑定请求。
  • 服务端发起推送请求。
  • 移动推送核心获取到推送请求,移动推送核心根据推送类型进行区分:
    • 若按设备推送,则直接调用移动推送网关下发消息。
    • 若按按用户推送,则根据请求中的用户标识获取与之绑定的设备标识,然后调用移动推送网关下发消息。
  • 移动推送网关下发消息。
  • 消息下发成功后,客户端会向移动推送网关确认已收到消息,如果用户配置了回调接口,移动推送核心会给服务端回执。
  • 客户端在用户主动退出登录时调用解绑 RPC 接口。

苹果及国外安卓设备

国外安卓的推送网关采用谷歌的 GCM/FCM 服务,苹果的推送网关采用苹果的 APNs 服务,此处以苹果设备为例。

客户端使用 RPC 经由 RPC 网关直接与移动推送核心进行交互。整个流程如下图所示:

iOS接入流程

其中:

  • 客户端获取苹果下发的设备标识。
  • 客户端调用上报设备 RPC 接口经由 RPC 网关向移动推送核心上报设备信息。
  • 应用用户在客户端上发起登录。
  • 用户登录成功后,可以选择在此时调用绑定 RPC 接口经由 RPC 网关向移动推送服务端发起用户和设备绑定请求。
  • 服务端向移动推送核心发起推送请求。
  • 移动推送核心获取到推送请求,并根据推送类型进行区分:
    • 若按设备推送,则直接调用 APNs 服务下发消息。
    • 若按用户推送,则根据请求中的用户标识获取与之绑定设备标识,然后调用 APNs 服务下发消息。
  • 消息下发成功后,客户端会向移动推送核心确认已收到消息,如果用户配置了回调接口,移动推送核心会给服务端回执。