单群聊选型实践
本文基于融云 IMKit 能力,系统梳理应用接入单群聊社交场景时的常见需求,并提供对应的解决方案与实现指引。同时,本文也对可能遇到的问题及关键细节加以提示,帮助您快速理解业务逻辑,高效完成功能落地。如果您基于 IMLib 实现,可参考 IMLib 单群聊场景实践。
- 本文档主要针对单聊及普通群聊(限制人数 3000 人)场景。
- 其他会话类型的详细介绍与区别,请参考会话类型说明(Android)。
SDK 选型(当前文档基于融云 IMKit 能力)
若您需要在应用内集成融云即时通讯能力,需在 IMLib 与 IMKit 两款 SDK 间做出选择。融云 IM 客户端 SDK 提供丰富的组件与接口,大部分能力开箱即用,您可根据业务需求灵活选型。
融云 IM 支持单聊、群聊、超级群、聊天室等多种业务形态,配合 IM 服务端 API,可满足丰富的业务需求。
业务选型
| 业务需求 | 建议做法 |
|---|---|
| 需要将 IM 核心能力深度集成,基于业务有特定的 UI 展示需求,需要完全自定义 UI | 选择 IMLib:封装了通信核心能力和会话、消息等对象,不含任何 UI 组件,可给予您最大的灵活性。 |
| 希望快速上线,直接使用成熟的会话界面 | 选择 IMKit:集成会话界面(UI),提供开箱即用的单聊、群聊能力,可大幅缩短开发周期。 |
| 需要快速上线,但需要对界面做一定定制 | 选择 IMKit:通过丰富的 API 自定义界面功能,或使用官方插件扩展能力,在成熟 UI 基础上按需调整。 |
两款 SDK 对比
| 特性 | IMLib | IMKit |
|---|---|---|
| 定位 | 即时通讯能力库 | 即时通讯界面库 |
| UI 组件 | 不含任何 UI | 集成会话界面、消息列表、用户托管页面等 |
| 支持业务 | 单聊、群聊、聊天室、超级群 | 单聊、群聊(超级群、聊天室无现成 UI) |
| 灵活性 | 极高,可完全自定义 | 高,可定制或扩展 |
| 开发周期 | IMLib SDK 接入较快,UI 开发周期取决于业务需求 | 较短 |
| 依赖关系 | 独立使用 | 依赖 IMLib |
实现要点
- 业务形态:单聊、群聊功能无需额外开通,创建应用后即可使用。
- 平台支持:IMLib 支持 Android、iOS、Web、HarmonyOS、Flutter、React Native、Unity、uni-app、小程序;IMKit 支持 Android、iOS、Web、HarmonyOS、Flutter、uni-app(Web 端需搭配 IMLib 5.x 使用)。
- 版本建议:各平台 IMLib 建议使用 5.x 系列;IMKit 对应 5.x 系列。HarmonyOS 建议使用当前最新版本 SDK。
- 包体积:集成前可查阅集成 SDK 后包体积增量文档,评估对安装包的影响。
选型 IMLib
适用场景:深度集成 IM 能力、完全自研 UI、需要支持超级群或聊天室的自定义界面、跨平台(React Native / Unity / Flutter / uni-app)且无现成 IMKit 支持的场景。
实现方式:集成 IMLib SDK,自行实现会话列表、聊天界面、消息气泡等全部 UI,调用 IMLib 的会话、消息等 API 完成业务逻辑。可参考官方 Demo和部分 IMkit 开源代码 与客户端 API 文档。
文档:IMLib 开发指导(Android)(iOS / Web / 其他端请查看对应平台 IMLib 文档)
选型 IMKit
适用场景:快速上线单聊、群聊功能;希望直接使用成熟会话 UI;在现有 UI 基础上做定制或扩展。
实现方式:集成 IMKit SDK(会自动引入 IMLib),直接使用会话列表、聊天界面等组件,通过配置和 API 自定义主题、消息展示、扩展功能等,无需从零实现聊天 UI。
文档:IMKit 开发指导(Android)(iOS / Web / 其他端请查看对应平台 IMKit 文档)
源码:源码获取地址
目前融云针对 Android、iOS、Flutter 及 uni-app 平台的 IMKit SDK 均已开源。您可以通过官方渠道获取源码进行集成和二次开发。
若在源码基础上进行修改,后续升级 SDK 版本时将面临较高的合并成本,排查问题也会更加复杂。同时,由于代码经过定制,官方技术支持团队将无法为修改后的源码提供直接的技术保障和问题排查支持。请在集成前综合评估长期维护的投入。
准备工作
创建应用与数据中心选型指南
注册开发者账号
- 访问融云控制台注册您的开发者账号。注册成功后,控制台会自动在开发环境中为您创建一个应用。
- 在控制台的密钥管理页面,获取您的应用在开发环境的 App Key。您可在密钥管理页面查看应用的信息,如 App Key、App Secret、所属数据中心(默认为北京)。

创建新应用(含数据中心选择)
如果您的应用在海外上线且用户主要在海外,在创建应用前,您可以根据消息传输需求及合规要求,选择适合您业务的海外数据中心。 文档:海外数据中心使用指南
| 业务场景 | 推荐数据中心 | 说明 |
|---|---|---|
| 国内业务 | 中国(北京) | 默认选项,用户主要在中国大陆 |
| 出海业务(东南亚) | 新加坡 | 用户主要分布在东南亚地区 |
| 出海业务(北美) | 北美(俄勒冈) | 用户主要分布在北美地区 |
| 出海业务(中东) | 沙特 | 用户主要分布在中东地区 |
| 全球化业务 | 根据主用户群选择 | 选择用户最集中的区域对应的数据中心 |
创建方式
- 打开融云控制台应用管理页面。
- 单击创建应用。您将在创建应用的弹窗中选择数据中心。
- 在创建应用对话框中输入您的应用名称、应用简介、应用类型、运营阶段、数据中心。

- 每个应用均拥有两个不同的 App Key,分别对应开发环境与生产环境,且两个环境之间数据相互隔离。在您的应用正式上线前,建议切换到生产环境的 App Key,以便完成上线前全流程测试和最终发布。
- 应用创建后,数据中心不可修改(不支持跨数据中心迁移和上线),请谨慎选择。
用户介绍
App 用户需要接入融云服务才能使用即时通讯功能。对于融 云来说,用户是指持有由融云分发的有效 Token、接入并使用即时通讯服务的 App 用户。同一个用户可能拥有多个有效的访问令牌(Token),这些令牌均可用于登录系统。在进行限制时,系统以用户为单位进行控制,而不是以单个令牌为单位。令牌的失效机制基于时间,即可以将指定时间之前的 Token 作废。
注册用户
应用服务端(App Server)应向融云服务端提供 App 用户的用户 ID(userId),以换取唯一用户 Token。对融云来说,这个以 userId 获取 Token 的步骤即注册用户,且必须通过调用 Server API 来完成。
为方便您快速体验测试,您也可以在创建应用后,在开发者后台中获取用户 Token 进行测试。
应用客户端必须持有有效 Token,才能成功连接到融云服务端,使用融云即时通讯服务。
注册用户数限制
多端同时在线
多端同时在线是指同一用户账号从多个平台同时连接到融云即时通讯服务的功能。默认情况下,融云支持多端设备同时在线(同一用户账号可在移动端、Web 端、桌面端、小程序端最多一个设备上同时在线),该功能无需开通即可使用。
默认多端设备之间不会进行消息同步。例如 Web 端与移动端同时登录,Web 端接收到消息后,移动端不会再接收到该消息。如需多端同步,请开通多设备消息同步服务。
多端登录限制说明
默认的情况下,同一用户账号可在移动端、Web 端、桌面端、小程序端最多一个设备上同时在线。
| 平台类别 | 限制 | IM SDK 支持平台列表 |
|---|---|---|
| 移动端 | 默认仅支持一个移动端设备连接。如需支持移动端多设备登录 ,请[提交工单]咨询详情。 | Android、iOS、HarmonyOS |
| 桌面端 | 默认仅支持一个桌面端设备连接。 | Electron 框架(通过 Web 端 SDK 的 Electron 模块支持) |
| Web 端 | 默认仅支持一个 Web 页面连接(每个浏览器标签页认为是一个连接)。在控制台自助开通多设备消息同步服务后,自动支持多 Web 页面连接。 | Web |
| 小程序端 | 默认仅支持一个小程序连接。如需支持小程序多设备登录 ,您可以在融云控制台,在 IM 服务>功能配置>多端,开通小程序多端服务。 | 小程序 |
导入 SDK
在开始之前,请确保已创建应用并完成客户端 SDK 集成(Android)(iOS / Web / 其他端请查看对应平台文档中的「SDK 集成」章节)。
IMKit 用户信息展示方式选型
若您需要在 IMKit 的会话列表、会话页面等 UI 中展示用户资料(昵称、头像)和群组信息,可按下表选择实现方式。
IMKit 支持两种用户信息展示方式:用户信息提供者代理方式(默认)和信息托管方式(5.12.0 起)。二者在数据来源、更新机制及接入复杂度上不同,请根据业务需求选型后按对应方式接入。
业务选型
| 业务需求 | 建议做法 |
|---|---|
| 已有用户中心,用户信息完全在 App 服务端维护,希望 IMKit 按需从自有接口拉取并展示 | 用户信息提供者代理方式:通过代理方式向 IMKit 提供用户信息;数据由应用层主动提供并可选缓存到本地。 |
| 希望用户改完资料后,好友、订阅用户等自动看到最新昵称、头像,不想自建同步逻辑 | 信息托管方式:将用户资料托管到融云,由融云向好友或订阅关系用户推送更新;会话页优先展示消息体中的用户信息,其次为托管信息。 |
方式一:用户信息提供者代理方式
实现方式:应用层主动从 App 服务端获取用户信息、群组信息、群成员用户信息,并通过 SDK 提供的设置方式提供给 IMKit。融云服务端注册获取 Token 时传入的用户昵称及头像仅用于推送,不用于 IMKit 会话展示。
适用场景:已有成熟用户体系、希望数据完全在自有业务侧维护的业务。
参考文档:用户信息(Android IMKit) | 用户信息(iOS IMKit) | 用户信息(Web IMKit) | 用户信息(HarmonyOS IMKit)(其他端请查看对应平台文档中的「用户信息」章节)。
方式二:信息托管方式
实现方式:将用户、群组、群成员等信息托管到融云,会话列表和会话页面从融云托管接口获取数据并缓存在内存中。会话页优先展示消息体中携带的用户信息,其次为托管信息。仅好友或订阅关系的用户会实时更新。
适用场景:希望资料变更后,好友、订阅用户等自动看到最新信息,无需自建同步逻辑的业务。
接入要点:
- 开通与切换:信息托管服务默认已开通,无需额外配置。通过以下代码切换到托管模式:
- Android
- iOS
- Web
RongUserInfoManager.getInstance().setDataSourceType(RongUserInfoManager.DataSourceType.INFO_MANAGEMENT);
[RCIM sharedRCIM].currentDataSourceType = RCDataSourceTypeInfoManagement;
暂无
- 数据来源:切换后,会话列表和会话页从融云 lib 信息托管接口取数据,取到后缓存到内存;内存中的信息在应用生命周期内有效。
参考文档:信息托管概述(Android IMKit) | 信息托管概述(iOS IMKit)
黑名单管理
本节帮助您根据业务需求选择使用用户白名单、用户黑名单或好友关系管理(融云托管)来实现单聊消息限制能力。相关 UI 需要业务侧实现。
默认情况下,App Key 下所有用户均已开启用户黑名单服务。在即时通讯服务端建立黑名单关系的同时,在自有应用服务器维护一份黑名单数据,便于业务查询与统计。
如使用融云提供的好友关系管理服务,默认非好友间也可以正常发送消息。如需要限制为仅好友可以发送消息,可以在融云控制台 IM 服务 > 功能配置 > 好友 > 仅好友可以相互发送单聊消息 中开启该功能。
业务选型
| 要点 | 说明 |
|---|---|
| 默认所有人可聊,少数人可以「拉黑」不想聊的人 | 黑名单 |
| 默认所有人不可聊,只有加好友或加入白名单的人才能互相发单聊 | 白名单 / 仅好友可以相互发送单聊消息 |
您的单聊默认规则是什么?
│
├── 默认「所有人可以互相发单聊」
│ │
│ └── 选【黑名单】
│ (用户通过拉黑排除不想聊的人)
│
└── 默认「只有好友/指定人才可以发单聊」
│
└── 选【白名单/加好友】
(用户通过加好友/加白名单开放聊天权限)
能力与限制
| 要点 | 说明 |
|---|---|
| 人数上限 | 均为 3000 个用户 |
| 黑名单与白名单互斥 | 黑名单与白名单服务不能同时开启。 开启白名单后黑名单功能失效,原黑名单数据保留,关闭白名单后仍可恢复。 |
| 单向拉黑 | 拉黑为单向操作:您拉黑用户 A 后,A 无法向您发单聊(会收到 405 错误),您仍可向 A 发消息,A 可正常接收。 |
- 服务端 API 发送单聊消息默认不校验黑名单。若需受黑名单限制,请在调用时设置参数
verifyBlacklist = 1。 - 用户白名单服务:也可限制单聊消息,按「发件人是否在白名单内」过滤;仅白名单内用户的消息可送达当前用户。详见用户白名单服务概述。
文档:从服务端管理黑名单 | 从客户端管理黑名单(Android)(iOS / Web / 其他端请查看对应平台文档中的「黑名单管理」章节) | 单聊用户白名单概述
在线状态
若您需要在应用内展示用户在线、离线(如会话列表绿点、联系人状态),或基于在线状态做业务逻辑(如优先推荐在线用户、约课选在线讲师),可按以下方式接入。
融云会自动上报用户的连接状态(在线、离线),您只需选择如何接收这些状态:通过服务端回调推送到您的业务服务器,或通过客户端订阅在端上直接收到状态变更。两种方式可单独使用,也可同时使用。
业务选型
| 业务需求 | 建议做法 |
|---|---|
| 只在 IMKit 会话页面展示在线状态(会话列表、好友列表绿点等) | 使用客户端订阅:在控制台开通「客户端用户在线状态订阅」或「客户端好友在线状态变更通知」,参考 IMKit 在线状态文档实现。 |
| 需要在自有服务器记录、统计或分析谁在线、离线 | 使用服务端订阅:在控制台配置「用户在线状态订阅」回调地址,用户上线、离线、登出时融云会 POST 到您的服务器,您落库或做后续逻辑即可。 |
| 既要界面展示,又要在后台用状态数据 | 两种都接:服务端做全量同步与报表,客户端做列表绿点等展示。 |
服务端订阅在线状态
适用场景:需要在业务服务器侧感知用户上线、离线、登出,用于落库、风控、统计或多端同步。
具体实现:
- 在融云控制台为该 App Key 配置用户在线状态订阅回调地址(若服务器有 IP 限制,需配置回调 IP 白名单)。
- 在您的服务端实现该地址的 HTTP 接口,接收融云 POST 的状态变更 body(含
userid、status(0 上线 / 1 离线 / 2 登出)、os、time等),按业务需要落库或触发逻辑。 - 若需主动查询某用户当前是否在线,可调用服务端 API 查询用户在线状态。