接入外部通讯录
如果接入方已实现自研的通讯录页面,并希望替换掉协作中台SDK 内置通讯录,可以通过实现相关协议方法实现效果。接入方需要实现 KIMContactsDelegate
协议,并将其注入到SDK 中。
接口定义
方法 | 参数 | 返回值 | 说明 |
---|---|---|---|
contactsViewController | 无 | UIViewController 自定义通讯录视图控制器。 | 该代理方法返回自定义的通讯录视图控制器,如果开发者已实现自研的通讯录页面,并希望替换 SDK 内置的通讯录,可以通过实现该方法返回自研的通讯录页面。当返回为 nil 时,内部走默认页面。 |
contactsPickerViewController |
| UIViewController 自定义通讯录选择器视图控制器。 | 该代理方法返回自定义的通讯录选择器视图控制器,如果开发者已实现自研的通讯录选择器页面,并希望替换 SDK 内置的通讯录选择器,可以通过实现该方法返回自研的通讯录选择器页面。当返回为 nil 时,内部走默认页面。 |
KIMContactsPickerParams
说明:
属性 | 类型 | 说明 |
---|---|---|
title | String | 通讯录页面标题。 |
selectType | KIMContactsPickerParamsSelectType | 通讯录选择类型。 • chat:会话选择,可以返回会话及用户id,返回用户id时内部自动创建会话。 • user:用户选择。 |
canMultipleSelect | Bool | 是否支持多选。 |
maxSelectCount | Int | 最大选择数量。 |
selectedUserids | [String] | 已选用户 id 列表,可以取消选中。注意:用户id为SDK内部使用的用户Id。 |
defaultSelectedUserids | [String] | 默认用户 id 列表,不能取消选中。注意:用户id为SDK内部使用的用户Id。 |
disableSelectedUserids | [String] | 不可选的用户Id列表。注意:用户id为SDK内部使用的用户Id。 |
代码示例
swift
// 实现协议。
class MyContactsProvider: KIMContactsDelegate {
func contactsViewController() -> UIViewController? {
return AddressBookSampleVC()
}
func contactsPickerViewController(params: KIMContactsPickerParams,
selectedCallback: ((_ addressBookPickerVc: UIViewController, _ chatIds: [String], _ selectedUserIds: [String]) -> Void)?,
cancelledCallback: ((_ addressBookPickerVc: UIViewController) -> Void)?) -> UIViewController? {
let vc = AddressBookPickerSampleVC()
vc.params = params
vc.selectedCallback = selectedCallback
vc.cancelledCallback = cancelledCallback
return vc
}
}
// 2. 设置协议代理。
KIM.userModule.contactsDelegate = MyContactsProvider()
Objective-C
// 1. 实现协议。
@interface MyContactsProvider ()<KIMContactsDelegate>
@end
@implementation KIMBridge
- (UIViewController *)contactsViewController {
return [[AddressBookSampleVC alloc] init];
}
- (UIViewController *)contactsPickerViewControllerWithParams:(KIMContactsPickerParams *)params selectedCallback:(void (^)(UIViewController * _Nonnull, NSArray<NSString *> * _Nonnull, NSArray<NSString *> * _Nonnull))selectedCallback cancelledCallback:(void (^)(UIViewController * _Nonnull))cancelledCallback {
AddressBookPickerSampleVC *vc = AddressBookPickerSampleVC()
vc.params = params
vc.selectedCallback = selectedCallback
vc.cancelledCallback = cancelledCallback
return vc
}
@end
// 2. 设置协议实现代理。
KIM.userModule.contactsDelegate = [[MyContactsProvider alloc] init];
通过以上步骤即可完成外部通讯录的接入,实现 协作中台 SDK 内所有涉及调用通讯录的功能,全部替换为外部通讯录,例如通讯录tab、创建群聊/添加群聊成员等。