推送服务概述
融云的推送服务是其即时通讯解决方案的一部分,支持多种远程推送功能。
推送服务能力
推送服务的主要能力包括:
- 多厂商适配:推送服务已对接小米推送、华为推送、荣耀推送、魅族推送、OPPO 推送、vivo 推送、FCM 推送,支持向各个推送渠道发起远程推送通知。
- 离线消息推送:当用户不在线时,服务端能够触发远程推送通知,通过第三方厂商的推送通道将通知递送到用户的设备上,可以保证即时通讯的消息即使在应用关闭的情况下也能及时通知到用户。详见下文离线消息推送通知。
- 不落地通知:直接通过服务端 API 向客户端发送远程推送通知,称为不落地通知。不落地通知中不包含任何会话消息,无论客户端 App 是否在前台,所有通知内容始终仅会以通知形式展示在系统通知栏中,用户无法在任何聊天会话中看到不落地通知的内容。详见下文不落地通知。
- 自定义推送通知:开发者可以自定义推送通知的内容,包括推送消息的标题、图标、描述等,以适应不同的应用场景。
- 多语言适配:支持通过推送模板功能实现多语言推送。服务端会根据 App 用户通过客户端上报的推送语言,从指定推送模板中匹配对应语言的推送内容进行远程推送。
- 推送通知的统计和分析:融云可能提供了推送通知的统计和分析工具,帮助开发者了解推送效果,优化推送策略。
离线消息推送通知
假设用户仅在一台设备上登录,如果主动断开连接(disconnect()
)或者应用程序已被用户或系统杀死,融云会认为用户在该客户端离线。用户离线状态下,支持将收到的单聊消息、群聊消息、系统消息、超级群消息通过第三方推送厂商或融云自建的推送服务通知客户端。
- 如果由第三方厂商推送服务发送提醒,该提醒一般由系统直接弹出,以通知形式展示在通知面板,提示用户收到消息。
- 如果由融云自建推送通道(RongPush)发送提醒,该提醒一般由 SDK 调用系统 API 构建通知后弹出。注意,RongPush 在国内大部分机型上无法存活。建议应用程序集成第三方厂商的推送服务。
用户点击推送通知后再次与融云服务端建立 IM 连接后,SDK 会有如下行为:
- 自动收到离线期间的单聊、群聊离线消息?。服务端默认缓存 7 天未收取的离线消息。
- 自动收到离线期间超级群会话中 最后一条消息,应用程序需要自行拉取离线期间的历史消息。
提示
应用程序处于后台且活跃时,用户仍处于在线状态,SDK 仍可实时收到会话消息,消息送达过程中不会使用任何推送服务,因此用户设备不会收到来自任何推送服务的通知。如果使用 IMLib,应用程序需要自行调用系统 API 创建并弹出本地通知。如果使用 IMKit,SDK 默认会调用系统 API 创建并弹出本地通知。
不落地通知
融云支持直接通过服务端 API 向客户端发送远程推送通知,称为不落地通知?。不落地通知中不包含任何会话消息,无论客户端 App 是否在前台,所有通知内容始终仅会以通知形式展示在系统通知栏中,用户无法在任何聊天会话中看到不落地通知的内容。
不落地通知始终通过推送通道下发数据,因此依赖应用程序集成第三方厂商推送服务,或者在客户端启用 RongPush。
- 如果 由第三方厂商推送服务发送提醒,该提醒一般由系统直接弹出,以通知形式展示在通知面板,提示用户收到消息。
- 如果由融云自建推送通道(RongPush)发送提醒,该提醒一般由 SDK 调用系统 API 构建通知后弹出。注意,RongPush 在国内大部分机型上无法存活。建议应用程序集成第三方厂商的推送服务。
不落地通知仅支持通过服务端 API 发送,例如:
目前不支持通过控制台发送不落地通知(仅部分旧账号仍保留该能力)。