跳转至

服务概述

此文档可帮助开发者快速了解融云群组基本功能,以及 SDK 集成中群组的常见问题。

群组介绍

群组指两个以上用户一起进行聊天,群组成员信息由 App 提供并进行维系,融云只负责将消息传达给群组中的所有用户, App 在后台运行或者 App 进程被杀死后可以收到推送通知。每个群最大人数上限为 3000 人,App 内的群组数量没有限制。

与聊天室的区别

融云提供群组与聊天室业务,其主要区别如下,客户可根据自己的业务场景进行选择:

功能 群组 聊天室
离线消息 支持离线消息存储,存储时间可设置(1 ~ 7 天),默认存储 7 天。 不支持离线消息,只有当前在线用户可收到聊天室中消息
人数限制 默认一个群上限为 3000 人,可调整群上限,需要提交工单申请开通。 聊天室人数无上限
消息提醒 离线状态,群组中有新消息时,支持 Push 通知。 离线后不再接收聊天室中消息。
本地存储 存储在移动端本地,提供本地消息搜索功能。 退出聊天室后同时删除本地聊天室消息,不支持消息搜索功能。
历史消息 提供服务端消存储存功能,需开通单群聊消息云存储,默认存储时长为 6 个月。 提供服务端消存储存功能,需开通聊天室消息云存储,默认存储时长为 2 个月。
用户加入限制 一个用户可加入多个群组,没有限制。 默认一个用户只能加入一个聊天室,加入多个聊天室功能需要提交工单申请开通。
加入后消息获取逻辑 默认加入群组后,只能查看加入后群组中产生的消息,如需要查看,则需要开通单群聊消息云存储后,再开通查看加入前群消息功能 加入后可获取聊天室中最新的 50 条消息。
退出逻辑 需要通过 AppServer 自行调用退出群组接口。 提供退出聊天室接口,同时当用户离线 30 秒后聊天室中有新消息产生时或离线后聊天室中产生 30 条消息时会自动退出聊天室。
销毁/解散逻辑 需要通过 AppServer 自行调用解散群组接口。 提供销毁聊天室接口,可通过 AppServer 调用。同时聊天室中 1 小时内没有消息产生时,将自动销毁聊天室。
消息可靠度 100% 可靠,不丢消息。 消息量较大时,超出消费上限的消息将被丢弃,查看详细
相关接口调用 SDK 不提供群组功能接口,通过 Server API 提供群组功能接口。 SDK 和 Server API 同时提供功能接口,销毁聊天室操作只能通过 Server API 方式调用。
Server API 发送消息频率 每秒钟 20 条。 每秒钟 100 条。

功能列表

Server API 功能:

功能 描述
创建群组 App 内的群组数量没有限制
加入群组 每个群最大至 3000 人
退出群组 将用户从群中移除,不再接收该群组的消息。
解散群组
群成员查询
刷新群组信息 目前支持更新群组名称
同步用户所属群组 在集成融云前 App Server 已有群组数据,可使用此服务进行同步
群组成员禁言 被禁言用户可以接收查看群组中其他用户消息,但不能通过客户端 SDK 发送消息
群组整体禁言 指定群组所有成员不能发送消息,需要某些用户可以发言时,可将此用户加入到群禁言用户白名单中。
群组禁言用户白名单 群组被整体禁言后,禁言白名单中用户可以发送群消息。
发送群组消息 单个应用每秒钟最多发送 20 条消息,每次最多向 3 个群组发送
发送群组定向消息 向群中指定的一个或多个用户发送消息,群中其他用户无法收到该消息
发送群组 @消息
发送群组状态消息 群组中在线用户会收到此条消息,离线用户不会再收到此条消息,状态消息不计数、不存储

SDK 功能:

客户端的所有群组管理操作都需要通过 App Server,根据自己的逻辑进行管理和控制,然后通过 App Server 调用融云 Server API 群组接口进行群组操作,并将结果返回给客户端。

如果集成的是融云 IMKit SDK,需要在移动端实现用户、群组及群成员信息提供者逻辑,确保在会话列表及会话页面中用户头像和昵称能够正常显示,文档如下:

注:Web 端不提供界面组件 SDK 用户信息显示需要开发者实现。

常见问题

群组管理

1、客户端如何创建群组?

客户端创建群组需要由自己的应用服务器调用融云的 Server API 接口实现,群组 ID 创建时需要由客户 Server 端自行生成,调用融云接口创建成功后,同时返回给应用客户端。查看融云创建群组 API 文档

对于客户端开发人员来说,创建群组只需要与自己的服务端交互就行。

创建群组需要注意几点:

  1. 在客户端想绕开应用 Server 直接使用融云的 SDK 创建群组这是不可能的,融云移动端 SDK 也没有提供创建群组的方法。

  2. 创建群组的用户,默认加入到这个群组。

2、客户端如何加入群组?

通过客户端加入群组,需要客户端与应用服务器进行交互。

  • 首先,调用应用服提供给你加入群组的接口,这么做是为了让你们的应用服务器实时的知道当前群内有多少人,因为这个群组所有数据都是由你们自己维护的;

  • 然后,需要调用融云加入群组 API 方法。查看文档

3、如何退出群组,同时删除会话?

加入和退出是一样的逻辑,不再重复。

需要注意的是:如果你的客户端希望退出群组的同时,删除该群组对应的会话,那需要你的客户端在成功退出群组后,调用 removeConversation 来删除会话。

4、已有群组信息,如何同步群组信息到融云?

如果在集成融云前 App Server 已有群组数据,此时,需要将已有的群组信息,同步到融云服务端。

当用户第一次连接融云服务器时,需要向融云服务器提交 userId 对应的用户当前所加入的所有群组,此接口主要为防止应用中用户群信息同融云已知的用户所属群信息不同步。查看开发文档

举例:

  • 用户 A 现在已经加入了 "融云1","融云2" 这 2 个群,但是在调用同步群组信息的时候,同步的是 "融云1" 这个群,这时候用户 A 并未加入到 "融云2" 这个群,不会收到这个群发送的消息;

  • 如果用户 A 已经加入了"融云1"这个群,但是你调用同步群组信息的时候,同步的是 "融云1","融云2"这 2 个群,这时候用户 A 也会自动加入 "融云2" 这个群。

5、如何实现群组中群主和群管理员逻辑?

对融云来说,群组的唯一标识为群组 ID,没有群主和群管理员的概念,群主和群管理员的业务逻辑需要客户根据自己的业务需求进行实现。

6、群组成员数量的上限是多少?

融云目前支持的群成员上限为 3000 人。

7、是否支持获取应用下全部群组信息?

应用群组信息由客户应用服务器自行维护,融云不提供获取应用下所有群组信息功能。

8、通过搜索群组 Id ,申请加入这个群的时候,如何来实现是否同意此用户加入群?

如果 App 内有搜索群组的功能,当通过搜索的方式,申请加入到指定群组时,可以利用融云的自定义消息实现这个功能,逻辑如下:

当想加入这个群组时,此时需要先拿到这个群组的群主和管理员 userId,以及这个群组 Id。你自定义一条加入群组的消息类型,当群主和管理员收到这条自定义加入群组消息时弹出一个对话框,确认是否添加你为群成员。

以上,仅仅是一个参考,还有更多实现方式,按照应用的产品需求实现即可。

群组信息显示

1、通过 API 创建群组时,添加群名称为什么在客户端不显示,有什么用?

创建群组时设置的群名称,用于在发送群组消息时,如目标用户不在线进行远程 Push 在通知内容中显示使用,群组名称改变时也需要调用融云刷新群组信息接口同步,确认群名称与应用统一。

2、群组及群成员信息如何实现?

开发者需要实现的逻辑:

  1. 由开发者应用服务器维护群组及成员信息,群的创建、群成员的维护都需要在应用服务器完成,融云只需要知道群组 ID、群成员用户 ID 即可完成群消息的收发。

  2. 开发者在客户端需要实现本地获取、缓存并更新用户及群组信息功能。由客户端提供用户信息也避免了由于缓存导致的用户信息更新不及时,应用中不同界面上的用户信息不统一的问题(比如:一部分 App 从 App 服务器上获取并显示,一部分由融云服务器获取并显示),能够获得更好的用户体验。

融云 SDK 提供的能力:

针对融云的界面组件 IMKit SDK,为方便开发者集成,SDK 中设计了用户信息提供者、群组信息提供者和群名片信息提供者,开发者只需要实现该协议并提供正确的数据,IMKit 在会话列表及会话页面需要展示用户头像和昵称的时候,去调用对应协议的代理函数,即可显示用户和群组的名称与头像。实现流程如下:

  1. 调用融云 SDK 接口设置群组信息提供者及群名片信息提供者

  2. 在群信息提供者方法中,调用应用服务器,获取相关群信息

  3. IMKit 在会话列表及会话页面需要展示用户头像和昵称、群相关信息时,自动通过群信息提供者获取。

IMKit SDK 文档:

群组消息

1、群创建、成员加入等群通知消息如何发送?

融云在创建群组、用户加入、退出群组等完成群组操作后,不会发送通知消息。创建群组、成功加入及退出群组等群通知消息,需要由客户根据自身的业务场景决定,是否发送、什么时候发送。

以融云 SealTalk 创建群组为例,发送群组通知消息的流程如下:

  1. App 请求自己的 App Server 创建群组。
  2. App Server 调用融云创建群组 API 接口申请创建群组。
  3. 融云 API 接口返回 200 成功后,使用发送群消息 API 接口,发送创建群组通知消息。

融云提供了常用群通知消息类型,可根据业务需要使用合适的消息类型发送,查看详细

如融云提供的群通知消息不能满足业务需求,也可以通过自定义消息方式实现,发送自定义群通知消息。

2、如果实现在群组中向指定群成员发送消息?

融云提供群定向消息功能,支持给群组中指定的成员发送消息,群组中其他用户不会收到该消息,向群中部分用户发送消息阅读状态回执时可使用此功能。开发文档如下:

注:如果开通了单群聊消息云存储功能,群定向消息不会存储到云端。

3、加入群组后,是否可以查看群组中之前的历史消息?

默认加入群组后,只能查看加入后群组中产生的消息,如需要查看,则需要开通单群聊消息云存储后,再开通查看加入前群消息功能

4、群组解散后,是否还可以获取群的历史消息?

在开通单群聊消息云存储情况下,群组解散后,群的成员关系已经不存在,通过客户端无法在获取群存储在服务端的历史消息,保存到客户端本地的历史消息仍然可以查看。