多设备消息同步
多设备消息同步
在即时通讯业务中,同一用户账号可能在多个设备上登录。多设备消息同步是融云服务端提供的一项服务,可用于同一用户账号的多个设备之间同步收发消息。
默认情况下,融云不会在设备之间同步消息。新消息被某一端设备收取后,其他端无法收取该消息。
适用场景
在融云即时通讯业务中,多设备消息同步适用于以下情况:
- 同一用户账号在多设备上同时在线(无论是否为同一端),希望同步收发消息。例如,用户可能拥有多个移动端设备,如两个 Android 设备、一个 iOS 设备。
- 同一用户账号换设备登录(无论是否曾在该设备登录过),希望同步收发的消息记录。例如用户从 Android 设备下线后,换到另一个设备从 Web 端登录。
- 同一用户账号在当前设备卸载重装 App,希望同步收发消息记录。
支持在多设备间同步的消息
并非所有消息均支持多设备消息同步。状态消息仅支持在多设备同时在线时同步接收,不在线的设备无法通过多设备消息同步收到消息。
以下情况均属于状态消息:
- 融 云内置消息类型中定义为状态消息类型的消息。内置状态类型消息的具体包括:正在输入状态消息(
RC:TypSts
) - 自定义的状态消息类型的消息。详见各个客户端「自定义消息」文档。
- 使用服务端 API 状态消息接口发送的所有消息(不区分消息类型)均不支持同步。具体的 API 接口为发送单聊状态消息(
/statusmessage/private/publish.json
)、发送群聊状态消息(/message/group/publish.json
)。
开通服务
请前往控制台,在 IM 服务管理页面的普通服务标签下开通多设备消息同步服务。该服务在开发环境免费使用,默认为关闭状态。生产环境预存费用后才可开通服务。
服务开启、关闭设置完成后 30 分钟内生效。
对其他功能或业务的影响
多设备消息同步服务的状态对即时通讯业务中的离线补偿?、撤回消息、聊天室业务等有影响。
对离线补偿的影响
控制台的多设备消息同步服务包含了融云服务端离线补偿机制?的开关。
开通多设备消息同步服务后,融云服务端自动为 App 启用离线补偿机制。离线补偿机制会在以下场景触发:
- 换设备登录。用户在新设备上登录后(无论是否曾在该设备登录过),SDK 可获取最近指定天数(默认离线补偿天数为 1 个自然日)在其他终端上发送和接收过的消息。
- 应用卸载重装。消息与会话列表是存储在本地数据库,用户卸载 App 时会删除本地数据库。用户重新安装 App 后并再次连接时,会触发融云服务端离线补偿机制,SDK 可获取最近指定天数(默认离线补偿天数为 1 个自然日)在其他终端上发送和接收过的消息。
在 换设备登录 或 应用卸载重装 场景下,离线补偿机制仅可获取到最近(默认离线补偿天数为 1 天,最大 7 天)的会话。早于该天数的会话无法通过离线补偿机制获取。因此,离线补偿后的会话列表可能与原设备上或卸载前 的会话列表并不一致(您可能会有丢失部分会话的错觉)。
如需修改离线消息补偿的天数,可提交工单。建议谨慎设置离线补偿天数,当单用户消息量超大时,可能会因为补偿消息量过大,造成端上处理压力较大。
对 Web 平台连接数的影响
开通多设备消息同步服务后,可额外支持多 Web 页面连接(每个浏览器标签页也认为是一个连接),最多 10 个。
对撤回消息的影响
- 未开通多设备消息同步服务时,多端之间无法同步撤回的消息。
- 开通多设备消息同步服务后,消息发送端一旦撤回消息,如果用户在其他端在线,则其他端同步撤回该条已发送消息。如果用户在其他端不在线时,则在用户登录后同步撤回已发送的消息。
对服务端 API 发送消息的影响
通过服务端 API 发送消息时,部分接口可通过 isIncludeSender
指定消息发送者可否在客户端接收该已发消息。
- 未开通多设备消息同步服务时,仅在发送者已登录 客户端(在线)的情况下,通过 Server API 发送的消息可即时同步到发送者的在线客户端,无法同步到离线的客户端。
- 开通多设备消息同步服务后,如果发送者未登录客户端(离线),通过 Server API 发送的消息可在再次上线时同步到发送者的在线客户端。