跳到主要内容

客户端如何同步已发消息

您的应用业务端调用服务端 API 发送消息时,通常希望发件人用户的客户端也能同步该已发消息,例如:

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

您可以通过以下方式实现上述需求:

提示

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

设置 isIncludeSender 参数

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

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

以下接口支持 isIncludeSender

以下接口支持 isSyncSender

开通多设备消息同步

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

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

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

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

开通历史消息云存储服务

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

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

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

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

例外情况

融云 IM 服务不支持将聊天室广播消息存入服务端聊天室历史消息记录,因此仅支持在发件人客户端在线时同步聊天室广播消息。

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