iOS

全局配置

更新时间: 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 的相关文档。

此文档是否对你有帮助?
有帮助
去反馈
  • 配置中心
  • 配置时机
  • 配置方法
  • 常用全局设置
  • 设置消息已读未读状态
  • 设置语音消息播放模式
  • 其他可配置项