全局配置
更新时间: 2026/09/18 17:21:07
通过合理配置全局设置,您可以为用户提供一个更加个性化、符合业务需求的即时通讯体验。
配置中心
IMKitConfigCenter 是 NIM UIKit 的全局功能配置中心,提供丰富的配置开关和参数,让您可以根据业务需求灵活控制各项功能。通过这些配置,您可以定制个性化的即时通讯体验,包括群功能、会话分组、消息收藏、表情评论、消息翻译等多种功能。
主要配置参数:
| 参数 | 类型 | 说明 | 默认值 |
|---|---|---|---|
enableTeam |
Bool | 控制是否启用群功能。如果设置为 false,将不会出现任何与群相关的功能。 | true |
enableTeamJoinAgreeModelAuth |
Bool | 控制是否开启群聊申请邀请功能。启用后,验证消息展示群聊入群申请、入群邀请,群管理新增入群申请、入群邀请开关。 | false |
enableAtMessage |
Bool | 控制是否启用@提及功能。启用后,用户可以在消息中@其他用户。 | true |
enableCollectionMessage |
Bool | 控制是否启用消息收藏功能。启用后,用户可以收藏重要消息以便日后查看。 | true |
enablePinMessage |
Bool | 控制是否启用消息固定(Pin)功能。启用后,用户可以固定重要消息在会话顶部。 | true |
enableTopMessage |
Bool | 控制是否启用消息置顶功能。启用后,用户可以将重要会话置顶。 | true |
enableOnlineStatus |
Bool | 控制是否开启订阅在线状态。启用后,可以查看用户是否在线。 | true |
enableConversationGroup |
Bool | 控制是否启用会话分组功能。设置为 false 后,会话列表不展示会话分组入口,也不会调用会话分组相关接口。 | true |
enableOnlyFriendCall |
Bool | 控制陌生人是否可以发起音视频通话。设置为 true 时允许陌生人通话,设置为 false 时仅允许好友通话。 | true |
enableDismissTeamDeleteConversation |
Bool | 控制是否在解散、主动离开或被踢出群聊后自动删除对应的会话。 | true |
enableAIUser |
Bool | 控制是否启用 AI 数字人功能。启用后,应用将支持 AI 数字人相关功能。 | true |
enableAIChatHelper |
Bool | 控制是否开启 AI 聊天助手功能。启用后,AI 将辅助用户聊天。 | true |
enableRichTextMessage |
Bool | 控制是否支持富文本消息,包括换行等高级文本格式。 | true |
enableAntiSpamTipMessage |
Bool | 控制是否插入反垃圾提示消息。启用后,消息发送失败时可展示文本安全提示。 | true |
enableAIStream |
Bool | 控制是否开启流式消息功能。启用后,支持 AI 流式回复等功能。 | true |
enableEmojiReaction |
Bool | 控制是否开启消息表情评论(Reaction)功能。 | true |
enableInsertLocalMsgWhenRevoke |
Bool | 控制撤回消息后是否插入“此消息已撤回”提示消息。 | true |
enableCloudMessageSearch |
Bool | 控制历史消息搜索方式。设置为 true 使用云端搜索,设置为 false 使用本地搜索;该配置可保存至 UserDefaults。 | false |
recentForwardListMaxCount |
Int | 设置最近转发的会话 ID 列表最大长度。 | 5 |
teamManagerMaxCount |
Int | 设置群聊中允许添加的管理员人数,设置为 -1 表示不限制人数。 | 10 |
autoTranslationEnableTime |
TimeInterval | 设置自动翻译开启时间戳,单位为毫秒。0 表示关闭;非 0 时,仅自动翻译创建时间晚于该时间戳的文本消息。 | 0 |
translationTargetLanguage |
String | 设置消息翻译目标语言代码,支持 ISO 639-1 及云信扩展格式。 | zh-CHS |
SwiftUI 组件与 Swift&Objective-C 组件共用 IMKitConfigCenter。当前 SwiftUI 组件暂不支持 enableAIChatHelper,其余上述配置项均可使用。
配置时机
为确保配置能够正确生效,您需要在 NIM UIKit 功能或页面加载之前进行配置。以下是一些建议的配置时机:
- 建议在应用启动时统一配置所有全局设置,便于管理和调试。
- 某些设置如语音播放模式可以记住用户的偏好,保存到 UserDefaults 中。
- 某些功能可以根据用户权限、VIP 级别等条件动态调整。
配置方法
- Swift&Objective-C 应用在启动时、初始化 IM SDK 之前完成 NIM UIKit 的配置。
- SwiftUI 应用可通过
@UIApplicationDelegateAdaptor接入AppDelegate。
Swift
Swiftfunc application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 初始化 SDK 前配置 NIM UIKit
IMKitConfigCenter.shared.enableTeam = true // 启用群功能
IMKitConfigCenter.shared.enableAIUser = true // 启用 AI 数字人
IMKitConfigCenter.shared.enableAtMessage = true // 启用@功能
IMKitConfigCenter.shared.enablePinMessage = true // 启用 Pin 消息功能
// 设置 IM SDK 的配置项
let option = NIMSDKOption()
option.appKey = "your app key"
option.apnsCername = "网易云信控制台配置的 APNS 推送证书名称"
option.pkCername = "网易云信控制台配置的 PushKit 推送证书名称"
// 设置 IM SDK V2 的配置项
let v2Option = V2NIMSDKOption()
v2Option.enableV2CloudConversation = false
// 初始化 IM UIKit
IMKitClient.instance.setupIM2(option, v2Option)
return true
}
Objective-C
Objective-C- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 初始化 SDK 前配置 NIM UIKit
IMKitConfigCenter.shared.enableTeam = YES; // 启用群功能
IMKitConfigCenter.shared.enableAIUser = YES; // 启用 AI 数字人
IMKitConfigCenter.shared.enableAtMessage = YES; // 启用@功能
IMKitConfigCenter.shared.enablePinMessage = YES; // 启用 Pin 消息功能
// 设置 IM SDK 的配置项
NIMSDKOption *option = [NIMSDKOption optionWithAppKey:@"your app key"];
option.apnsCername = @"网易云信控制台配置的 APNS 推送证书名称";
option.pkCername = @"网易云信控制台配置的 PushKit 推送证书名称";
// 设置 IM SDK V2 的配置项
V2NIMSDKOption *v2Option = [[V2NIMSDKOption alloc] init];
v2Option.enableV2CloudConversation = NO;
// 初始化 IM UIKit
[[IMKitClient instance] setupIM2:option v2Option:v2Option];
return YES;
}
SwiftUI
Swiftimport NEChatKit
import NIMSDK
import SwiftUI
import UIKit
final class AppDelegate: NSObject, UIApplicationDelegate {
func application(_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
// 初始化 SDK 前配置 NIM UIKit
IMKitConfigCenter.shared.enableTeam = true
IMKitConfigCenter.shared.enableAIUser = true
IMKitConfigCenter.shared.enableAtMessage = true
IMKitConfigCenter.shared.enablePinMessage = true
let option = NIMSDKOption()
option.appKey = "your app key"
option.apnsCername = "网易云信控制台配置的 APNS 推送证书名称"
option.pkCername = "网易云信控制台配置的 PushKit 推送证书名称"
let v2Option = V2NIMSDKOption()
v2Option.enableV2CloudConversation = false
IMKitClient.instance.setupIM2(option, v2Option)
return true
}
}
@main
struct YourApp: App {
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
常用全局设置
除了功能开关配置外,NIM UIKit 还提供了一些常用的全局设置。建议您使用 SettingRepo.shared 进行设置,以下是两个典型示例:
设置消息已读未读状态
调用 SettingRepo.shared.setShowReadStatus() 方法可以控制是否在全局范围内显示消息的已读和未读状态指示。
Swift
Swift// 设置会话消息是否展示已读未读状态
// 参数为 true 表示显示已读/未读状态,false 表示隐藏
SettingRepo.shared.setShowReadStatus(true)
// 查询当前的已读状态显示设置
let isShowingReadStatus = SettingRepo.shared.getShowReadStatus()
Objective-C
Objective-C// 设置会话消息是否展示已读未读状态
// 参数为 YES 表示显示已读/未读状态,NO 表示隐藏
[SettingRepo.shared setShowReadStatus:YES];
// 查询当前的已读状态显示设置
BOOL isShowingReadStatus = [SettingRepo.shared getShowReadStatus];
SwiftUI
Swiftstruct MessageReadStatusSetting: View {
@State private var isOn = SettingRepo.shared.getShowReadStatus()
var body: some View {
Toggle("显示消息已读未读状态", isOn: Binding(
get: { isOn },
set: { value in
isOn = value
SettingRepo.shared.setShowReadStatus(value)
}
))
}
}
启用后,消息会显示如下状态指示图标:
设置语音消息播放模式
调用 SettingRepo.shared.setHandsetMode() 方法您可以控制语音消息的播放方式。参数为 true 时使用扬声器外放,参数为 false 时使用听筒播放。
Swift
Swift// 设置语音消息的播放模式
// true - 扬声器模式
// false - 听筒模式
SettingRepo.shared.setHandsetMode(true)
// 获取当前是否使用扬声器播放
let useSpeaker = SettingRepo.shared.getHandsetMode()
Objective-C
Objective-C// 设置语音消息的播放模式
// YES - 扬声器模式
// NO - 听筒模式
[SettingRepo.shared setHandsetMode:YES];
// 获取当前是否使用扬声器播放
BOOL useSpeaker = [SettingRepo.shared getHandsetMode];
SwiftUI
Swiftstruct AudioPlaybackModeSetting: View {
@State private var useSpeaker = SettingRepo.shared.getHandsetMode()
var body: some View {
Toggle("使用扬声器播放", isOn: Binding(
get: { useSpeaker },
set: { value in
useSpeaker = value
SettingRepo.shared.setHandsetMode(value)
}
))
}
}
其他可配置项
除了上述设置外,SettingRepo 还提供以下配置功能:
- 通知栏展示推送详情设置
- PC/Web 同步开关设置
- 消息提示音开关设置
- 新消息通知设置
- 节点配置等
有关这些配置的详细使用方法,请参考 SettingRepo 的相关文档。
此文档是否对你有帮助?




