跳到主要内容

客户端如何同步已发消息

提示

默认行为是不向发件人的客户端同步通过 Server API 发出的消息,也不会将该已发消息存入发件人的服务端历史消息记录。

App 业务端调用 IM Server API 发送消息时,通常期待发件人用户的客户端也可同步该已发消息,例如:

  • 发件人的客户端在线时,通过 Server API 发送的消息可自动同步至发件人的客户端设备。
  • 发件人的离线的客户端再次上线时,可自动收取通过 Server API 发送的消息。
  • 发件人的客户端拉取历史消息时,总可以获取从通过 Server API 发送的消息。

即时通讯服务端默认不向发件人的客户端同步通过 Server API 发出的消息。您可以通过以下方式实现上述需求。

设置 isIncludeSender

调用 IM Server API 的发送消息接口时,设置 isIncludeSender 参数为 1,这将保证在发件人客户端在线的情况下同步接收已发送的消息。部分接口支持 isSyncSender 参数,作用一致。

如果不传该参数,服务端使用默认值 0,即不同步,发送者的客户端无法获取该条已发消息。

以下接口支持 isIncludeSender

以下接口支持 isSyncSender

开通多设备消息同步

从 Server API 发送消息时,发件人的客户端可能不在线,此时即使 isIncludeSender 参数设为 1,服务端也无法向客户端实时同步从 Server API 发出的消息。

如果需要发件人的客户端上线时自动从服务端同步已发消息,需要开通多设备消息同步功能。开启该功能后,Server API 发出的消息将通过离线消息补偿机制同步给客户端。客户端上线时,默认自动同步 1 个自然日(含当天)的消息。

您可以从控制台自助开通多设备消息同步,详见消息管理服务配置

因聊天室、超级群业务不支持离线补偿,该方式仅支持以下单聊、群聊业务接口:

开通历史消息云存储服务

App 可能还需要在拉取历史消息时获取从 Server API 发出的消息。例如,从 Server API 发送消息后,发件人可能长期不登录客户端,导致离线补偿中存储的已发消息过期。或者由于发件人在客户端误操作,在本地删除了 从 Server API 发出的消息。

为满足上述需求,建议 App 同时开启历史消息云存储服务。

  • 单群聊历史消息云端存储:开通后,从 Server API 发出的单聊、群聊、系统会话消息可存入发件人的服务端历史消息记录,默认保存 6 个月。注意,必须在发送消息时将 isIncludeSender 参数设为 1 才会存储。
  • 聊天室历史消息云端存储:开通后,从 Server API 发出的聊天室消息可存入发件人的服务端历史消息记录,默认保存 2 个月。注意,必须在发送消息时将 isIncludeSender 参数设为 1 才会存储。

您可以从控制台自助开通以上服务,详见消息管理服务配置

例外情况

即时通讯服务不支持将聊天室广播消息存入服务端聊天室历史消息记录。因此仅支持发件人已登陆客户端(在线)的情况下同步聊天室广播消息。

超级群业务开通后,默认开启历史消息存储,无需额外开通,默认存储 7 天内的历史消息。发送超级群消息接口不支持设置 isIncludeSender。发件人拉取历史消息时会包含本人通过 Server API 发出的消息。