会话管理
协作中台 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) -> KIMDynamicChatMemberInfo
Objective-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)")
}