跳到主要内容

客户端如何同步已发消息

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

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

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

提示

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

设置 isIncludeSender 参数

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

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

以下接口支持 isIncludeSender

以下接口支持 isSyncSender

开通多设备消息同步

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

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

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

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

开通历史消息云存储服务

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

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

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

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

例外情况

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

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