会话管理
协作中台 SDK 提供了专门用于会话管理的接口。
创建单聊会话
用于一对一的单人聊天。
接口定义
swift
func createP2PChat(userId: String, completion: ((_ chatInfo: KIMCreateChatInfo?, _ error: KIMError?) -> Void)?)Objective-C
- (void)createP2PChatWithUserId:(NSString *)userId completion:(void (^)(KIMCreateChatInfo *, KIMError *))completion;参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| userId | String | SDK内部使用的用户Id。如果开发者只知道自身的账号体系下的用户Id,可以通过传入thirdUnionId调用获取用户方法 getUsers(thirdUninIds: [String], completion: @escaping ((_ users: [KIMUser], _ error: KIMError?) -> Void)) 得到SDK内部使用的用户Id。 |
| completion | (_ chatInfo: KIMCreateChatInfo?, _ error: KIMError?) -> Void)? | 结果回调。 chatInfo:创建成功后的会话信息。 error: 错误信息,失败时有值。 |
代码示例
swift
KIM.chatModule.createP2PChat(userId: self.userId) { [weak self] chatInfo, error in
guard let chatInfo = chatInfo, error == nil else {
debugPrint("创建失败")
return
}
let vc = KIMChatMessageViewController(chatId: chatInfo.chatId)
self?.navigationController?.pushViewController(vc, animated: true)
}创建群聊会话
用于多人聊天,可以是一个或多个人。
接口定义
swift
func createGroupChat(chatName: String?, userIds: [String], completion: ((_ chatInfo: KIMCreateChatInfo?, _ error: KIMError?) -> Void)?)Objective-C
- (void)createGroupChatWithChatName:(NSString *)chatName userIds:(NSArray<NSString *> *)userIds completion:(void (^)(KIMCreateChatInfo *, KIMError *))completion;参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| chatName | String? | 会话名称,不传默认为群成员名称组合如: "name1、name2、name3" |
| userIds | [String] | 群成员列表, userId 为SDK内部使用的用户Id。如果开发者只知道自身的账号体系下的用户Id,可以通过传入thirdUnionId调用获取用户方法 getUsers(thirdUninIds: [String], completion: @escaping ((_ users: [KIMUser], _ error: KIMError?) -> Void)) 得到SDK内部使用的用户Id。 |
| completion | (_ chatInfo: KIMCreateChatInfo?, _ error: KIMError?) -> Void)? | 结果回调。 chatInfo:创建成功后的会话信息。 error: 错误信息,失败时有值。 |
代码示例
swift
KIM.chatModule.createGroupChat(chatName: nil, userIds: userIds) { chatInfo, error in
guard let chatInfo = chatInfo, error == nil else {
debugPrint("创建失败")
return
}
let vc = KIMChatMessageViewController(chatId: chatInfo.chatId)
self?.navigationController?.pushViewController(vc, animated: true)
}获取指定群成员信息
接口定义
swift
func getChatMemberInfo(chatId: String, userId: String) -> KIMDynamicChatMemberInfoObjective-C
- (KIMDynamicChatMemberInfo *)getChatMemberInfoWithChatId:(NSString *)chatId userId:(NSString *)userId;参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| chatId | String | 会话 id |
| userId | String | SDK内部使用的用户Id。如果开发者只知道自身的账号体系下的用户Id,可以通过传入thirdUnionId调用获取用户方法 getUsers(thirdUninIds: [String], completion: @escaping ((_ users: [KIMUser], _ error: KIMError?) -> Void)) 得到SDK内部使用的用户Id。 |
该方法返回值为 KIMDynamicChatMemberInfo 对象,可以通过 KIMDynamicChatMemberInfo 提供的 attach(changedAction: ValueChanged?) 方法添加信息改变监听闭包,当信息发生改变时会调用闭包返回 KIMChatMemberInfo。
KIMChatMemberInfo 说明
| 属性 | 类型 | 说明 |
|---|---|---|
| chatId | String | 成员会话id。 |
| userId | String | 成员用户Id。该 userId 为SDK内部使用的用户Id。如果开发者只知道自身的账号体系下的用户Id,可以通过传入thirdUnionId调用获取用户方法 getUsers(thirdUninIds: [String], completion: @escaping ((_ users: [KIMUser], _ error: KIMError?) -> Void)) 得到SDK内部使用的用户Id。 |
| name | String | 用户名称。 |
| markName | String | 备注。 |
| groupName | String | 群昵称。 |
| avatar | String | 群成员头像。 |
代码示例
swift
let dynamicMember = KIM.chatModule.getChatMemberInfo(chatId: "", userId: "")
dynamicMember.attach { memberInfo in
debugPrint("\(memberInfo?.groupName)")
}