推送流程说明

推送流程说明

一、应用场景个推消息[服务端&客户端]推送完整流程

一个典型的程序化推送的技术方案如下图所示:

image-20230323103831338

  • APP调用个推SDK初始化接口,获取推送标识ClientID(简称CID);
  • APP将CID上传到服务端进行保存。通常需要将该CID与相应的用户ID进行关联,以便后续针对特定用户进行消息推送。
  • 应用方服务端需要给指定CID的设备发送消息时,调用个推服务端消息推送接口,个推服务端寻找目标设备,将消息下发给相应的个推SDK,进而将消息进行展示或由APP自行处理。

二、服务端推送消息流程细节

image

1、安卓消息服务端推送流程说明

  • 默认情况下:
    • 当CID在线(即app在前台打开运行)时,消息将通过个推通道下发到客户端;若具体到服务端Rest-V2代码中,即push_message中的消息体内容。
    • 当CID离线(即app在后台、锁屏、进程关闭)时,有开启对应厂商离线功能的,消息将通过个推侧请求对应厂商侧的服务端,具体到服务端Rest-V2代码中,即push_channel中的android中的消息体内容传递给厂商,实际的消息是经由厂商服务器下发至客户端;对于没有开启对应厂商功能的,消息将存在个推的离线库中,等待离线有效时间(ttl字段)内CID在线,再通过个推通道下发到客户端
  • 注意:安卓的消息推送,请求厂商通道成功的消息就不会再通过个推通道推送至客户端,反之亦是如此,即消息只会推送一次
  • 服务端有 strategy 字段,可以控制消息走个推通道还是走厂商通道,设置示例参考厂商下发策略说明
    • 1: 表示该消息在用户在线时推送个推通道,用户离线时推送厂商通道;
      2: 表示该消息只通过厂商通道策略下发,不考虑用户是否在线;
      3: 表示该消息只通过个推通道下发,不考虑用户是否在线;
      4: 表示该消息优先从厂商通道下发,若消息内容在厂商通道代发失败后会从个推通道下发。
    • 注意:
    • 该字段设置是vip功能,如有需要可联系技术支持。
    • 2和4的前提是CID必须要正常绑定着安卓厂商token,iOS则是devicetoken,否则设置该策略会报错

2、iOS推送流程说明

  • 当CID在线(即app在前台打开运行)时,消息通过个推通道下发到客户端,具体到服务端Rest-V2代码中,即push_message中的 transmission 内容传递给客户端。

  • 当CID离线(即app在后台、锁屏、app杀死状态)时,消息将通过个推侧请求对应厂商侧的服务端,具体到服务端Rest-V2代码中,即push_channel中的iOS中的内容请求给苹果的服务端,由苹果进行推送。

    注意:在默认的推送策略下,iOS若先走了苹果离线通道,在消息有效期(ttl字段)内,app打开在前台时,push_message中的 transmission 内容还将通过个推通道传递给客户端,此时可通过客户端 GeTuiSdkDidReceiveSlience 回调中的参数 offLine 的值来判断是否经过APNs通道,详情请查看iOSAPI接口说明

开发者中心 SDK 下载

文档中心搜索

技术
咨询

微信扫一扫

随时联系技术支持

在线
咨询