离线推送概述
离线推送概述
即时通讯 IM 支持集成第三方离线消息推送服务,为 React Native 开发者提供低延时、高送达、高并发、不侵犯用户个人数据的离线消息推送服务。目前支持的手机厂商推送服务包括:APNs、Google FCM、华为、荣耀、小米、OPPO、VIVO 和魅族。
离线推送过程
客户端断开连接或应用进程被关闭等原因导致用户离线时,即时通讯 IM 会通过第三方消息推送服务向该离线用户的设备推送消息通知。当用户再次上线时,服务器会将离线期间的消息发送给用户(这里角标表示的是离线消息数,并不是实际的未读消息数)。例如,当你离线时,有用户向你发送了消息,你的手机的通知中心会弹出消息通知,当你再次打开 app 并登录成功,即时通讯 IM SDK 会主动拉取你不在线时的消息。
除了满足用户离线条件外,要使用第三方离线推送,你还需在环信即时通讯云控制台配置推送证书信息,例如,对于华为推送,需配置证书名称和推送密钥,并调用客户端 SDK 提供的 API 向环信服务器上传 device token。
以下两种情况,即时通讯 IM 不会发送离线推送通知:
若应用在后台运行,则用户仍为在线状态,即时通讯 IM 不会向用户推送消息通知。
应用在后台运行或手机锁屏等情况,若客户端未断开与服务器的连接,则即时通讯 IM 不会收到离线推送通知。
离线推送高级功能
如果需要离线推送的高级功能,需在环信即时通讯控制台的即时通讯 > 功能配置 > 功能配置总览页面激活。高级功能包括推送通知方式、免打扰模式和推送模板。如需关闭推送高级功能必须联系商务,因为该操作会删除所有相关配置。
多设备离线推送策略
多设备登录时,可在环信即时通讯控制台的证书管理页面配置推送策略,该策略配置对所有推送通道生效:
- 所有设备离线时,才发送推送消息;
- 任一设备离线时,都发送推送消息。
注意:多端登录时若有设备被踢下线,即使接入了 IM 离线推送,也收不到离线推送消息。
技术原理
Android 平台离线推送
推送流程如下:
- 用户 B(消息接收者)检查设备支持哪种推送渠道,即 app 配置了哪种第三方推送服务且满足该推送的使用条件。
- 用户 B 根据配置的第三方推送 SDK 从第三方推送服务器获取推送 token。
- 第三方推送服务器向用户 B 返回推送 token。
- 用户 B 向环信服务器上传推送证书名称和推送 token。
- 用户 A 向 用户 B 发送消息。
- 环信服务器检查用户 B 是否在线。若在线,环信服务器直接将消息发送给用户 B。
- 若用户 B 离线,环信服务器判断该用户的设备使用的推送服务类型。
- 环信服务器将将消息发送给第三方推送服务器。
- 第三方推送服务器将消息发送给用户 B。
提示
- 开发者通过环信即时通讯云控制台配置 App 的推送证书,需填写证书名称(或者 App Key)。该步骤须在登录环信 IM SDK 成功后进行。证书名称是环信服务器用于判断目标设备使用哪种推送通道的唯一条件,因此必须确保与 Android 终端设备上传的证书名称一致。
- 关于获取和发送推送 token(device token),详见获取或更新推送 token和发送推送 token 到服务器端。
iOS 平台离线推送
推送流程如下:
- 用户 B 向 APNs 推送服务注册,获取推送 token。
- APNs 返回推送 token。
- 用户 B 向环信服务器上传推送证书名称和推送 token。
- 用户 A 向 用户 B 发送消息。
- 环信服务器检查用户 B 是否在线。若在线,环信服务器直接将消息发送给用户 B。
- 若用户 B 离线,环信服务器判断该用户是否使用了 APNs 推送。
- 环信服务器将消息发送给 APNs 推送服务器。
- APNs 推送服务器将消息发送给用户 B。
提示
关于获取和发送推送 token(device token),详见获取或更新推送 token和发送推送 token 到服务器端。
前提条件
- 已开启环信即时通讯服务,详见 开启和配置即时通讯服务。
- 了解环信即时通讯 IM 的使用限制,详见 使用限制。
- 若使用推送高级功能,需在环信即时通讯控制台上激活。
- 各推送使用的条件:
- APNs:在苹果设备上可用;
- Google FCM:设备启用了 Google Play 服务且可连接至 Google 服务器;
- 小米推送:在小米设备上可用;
- 华为推送:在华为设备上可用;
- 荣耀推送:在荣耀设备上可用;
- 魅族推送:在魅族设备上可用;
- OPPO 推送:在 OPPO 设备上可用;
- vivo 推送:在 vivo 设备上可用。