离线消息推送

本文介绍RTM增值服务中的离线消息推送功能,您可以了解离线消息推送功能的使用方法等内容。

功能介绍

RTM支持离线消息推送功能。当业务通过RTM服务给离线用户发送消息时,可通过iOS安卓的原生系统推送功能,在终端的 【通知栏/状态栏】 上显示一条信息,用来提示用户有新消息。 离线消息推送常用于应用业务需要给 离线用户发送消息的场景,如:

  • 聊天消息提醒
  • APP活动提醒
  • APP版本更新提醒

RTM服务会通过 APNsFCM 将消息以远程推送的形式下发到业务客户端。

功能详情

推送前期准备

要正确使用离线推送功能,业务客户端需要在程序启动时(或周期性)调用RTM客户端SDK中的 上报推送Token接口 上报自己的推送 DeviceToken

推送通知的详细逻辑

  • 如果在用户终端的消息设置中配置了推送聊天消息或自定义的业务消息,当用户在没有登录RTM服务的情况下,发送给用户的消息将通过离线消息通知的方式推送到终端。
  • 推送通知的内容默认为消息的内容( msg 参数)。
  • 如果需要自定义推送的内容,可通过自定义消息的 attrs 参数实现。
  • 如果在用户终端的消息设置中配置了推送文件类消息 ,默认情况下不会发送系统通知。如需实现文件类消息推送,可通过自定义消息的 attrs 参数实现。

自定义推送相关的attrs参数

attrs 参数是指RTM客户端SDK和RTM服务端SDK中,所有发送消息/聊天/文件类接口的一个可选参数,类型为 字符串。如需修改离线推送的行为和内容,需要按照以下规则传入 attrs 参数:

注意:以下示例代码中所示的 attrs,实际为一个 json 字符串。如手动拼写,请注意特殊字符的转义。

  • 不推送某些消息
{
    "notification" : {
         "no_push": true
        }
}
  • 自定义简单的推送内容
{
    "notification" : {
         "title": "this is title",
         "body" : "this is body"
        }
}

说明:目前支持的 keytitle(通知的标题)、body(通知的内容)、badge(iOS角标数字)、sound(声音资源)。

  • 自定义复杂的推送内容
{
    "notification" : {
         "aps": {
             "alert" : "...",
             "badge" : "...",
              ....
             }
          "fcm": {
             "data" : "...",
             "notification" : "...",
             }
        }
}

说明:apsfcm 结构分别对应 APNsFCM 官方推送文档中原始的 payload,RTM服务直接透传至 APNsFCM 。RTM服务不解析业务数据具体内容,请确保数据格式的正确。

参考文档