配置指南
IMKit 全局配置旨在提供易于使用的功能配置,帮助您快速构建聊天应用程序。
配置说明
IMKit 全局配置按照以下模块进行划分。您可以在相应的文件中了解 IMKit 提供的所有全局配置。
类别 | 描述 | API 文档 | 源码 |
---|---|---|---|
特性配置 | 控制是否启用消息引用功能、是否禁用 emoji 表情输入、本地通知的铃声与震动提示等。 | FeatureConfig | FeatureConfig.java |
会话列表页面配置 | 控制会话列表每个会话的头像、每页拉取的会话条数、会话列表延迟刷新时间等。 | ConversationListConfig | ConversationListConfig.java |
会话页面配置 | 控制是否启用已读回执、消息撤回、消息重发、合并转发、进入会话页面默认拉取的历史消息数量等行为以及是否展示未读消息气泡、是否展示 @消息数提示等 UI 配置。 | ConversationConfig | ConversationConfig.java |
聚合会话配置 | 控制由多个会话聚合而成的聚合会话的标题、头像等。 | GatheredConversationConfig | GatheredConversationConfig.java |
通知配置 | 控制前台非会话页面接收到消息是否静默、通知的标题类型本地通知的分类(Category)等。 | NotificationConfig | NotificationConfig.java |
修改 IMKit 配置
IMKit 提供了 RongConfigCenter 类,作为修改 SDK 全局配置的入口。
RongConfigCenter
类初始化时会先从 rc_config.xml 文件中读取默认配置。您可以通过在应用程序目录下新建 res/values/rc_config.xml
覆盖默认配置,也可以通过 RongConfigCenter
类的方法动态修改 IMKit 配置。
配置示例:
// 禁用引用消息功能
RongConfigCenter.featureConfig().enableReference(false);
// 设置会话列表延时刷新时间(防止消息量过大导致卡顿,此值不可以设置为 500)
RongConfigCenter.conversationListConfig().setDelayRefreshTime(1000);
// 会话列表中每个条目的头像显示默认为矩形,可修改为圆角显示。此方法在用户设置头像后生效,不设置头像的情况下,无法根据这个方法修改为圆角,默认为灰色矩型色块。
RongConfigCenter.featureConfig().setKitImageEngine(new GlideKitImageEngine() {
@Override
public void loadConversationListPortrait(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView, Conversation conversation) {
Glide.with(context).load(url)
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.into(imageView);
}
});
// 会话页面中每条消息的头像显示默认为矩形,可修改为圆角显示。此方法在用户设置头像后生效,不设置头像的情况下,无法根据这个方法修改为圆角,默认为灰色矩型色块。
RongConfigCenter.featureConfig().setKitImageEngine(new GlideKitImageEngine() {
@Override
public void loadConversationPortrait(@NonNull Context context, @NonNull String url, @NonNull ImageView imageView, Message message) {
Glide.with(context).load(url)
.apply(RequestOptions.bitmapTransform(new CircleCrop()))
.into(imageView);
}
});
// 修改 `needDeleteRemoteMessage` 属性为 `true` 后,IMKit 会同时删除本地与远端消息。(Since 5.2.3)
RongConfigCenter.conversationConfig().setNeedDeleteRemoteMessage(true);
// 设置前台处于非会话页面时,接收到消息后不通知。
RongConfigCenter.notificationConfig().setForegroundOtherPageAction(ForegroundOtherPageAction.Silent);
检查 IMKit 配置
IMKit 配置是实时应用的,修改后的配置将在下一次 UI 刷新或者操作时生效。建议在初始化 IMKit 后完成所有配置。
例外情况:快捷回复功能要求在初始化之 前启用(RongConfigCenter.featureConfig().enableQuickReply()
),否则该功能无法生效。