名片消息
您可以通过 IMKit 名片插件发送个人名片,消息将出现在会话页面的消息列表组件中。插件默认发送的消息中包含名片消息内容对象 RCContactCardMessage
(类型标识:RC:CardMsg
)。
用法
提示
IMKit 默认会话页面未启用名片消息功能。如需要使用该功能,可集成 IMKit 名片插件(ContactCard),并提供需要展示和发送的数据。
1.导入名片插件
IMKit 支持名片插件。导入名片插件模块后,扩展面板中会自动出现该功能入口。点击扩展面板中的个人名片会跳转至联系人列表页面(App 需要提供联系人列表)。
- IMKit 5.1.8 之前,名片插件(ContactCard)仅支持以源码方式导入。
- IMKit 5.1.8 及之后,名片插件(ContactCard)支持以源码方式或以 Framework 方式导入。
请根据应用程序集成 IMKit 的方式,选择使用 Framework 和源码导入小视频插件。请务必不要混用 Framework 和源码集成方式。
-
导入名片插件 Framework(要求 SDK ≥ 5.1.8)
rubypod 'RongCloudIM/ContactCard','~> x.y.z' #名片 framework
-
导入名片插件源码
rubypod 'RongCloudOpenSource/ContactCard','~> x.y.z' #名片源码
提示
x.y.z 代表具体版本,请通过融云官网 SDK 下载页面或 CocoaPods 仓库等方式查询最新版本。
2. 设置代理委托
在导入名片插件模块后,您还需要为名片插件提供联系人列表。您需要通过 RCCCContactsDataSource
协议为 SDK 提供联系人列表。详见 RCContactCardKit.h。
Objective C
[RCContactCardKit shareInstance].contactsDataSource = self;
3. 实现代理方法
Objective C
- (void)getAllContacts:(void (^)(NSArray<RCCCUserInfo *> *))resultBlock{
//开发者调自己的服务器接口,获取到联系人信息回调给名片模块
[RCDUserInfoManager getAllFriendsFromServer:^(NSArray<RCDFriendInfo *> *_Nonnull userList) {
NSMutableArray *contacts = [NSMutableArray new];
for (RCDFriendInfo *friend in userList) {
RCCCUserInfo *contact = [RCCCUserInfo new];
contact.userId = friend.userId;
contact.name = friend.name;
if (friend.portraitUri.length <= 0) {
friend.portraitUri = [RCDUtilities defaultUserPortrait:friend];
}
contact.portraitUri = friend.portraitUri;
contact.displayName = friend.displayName;
[contacts addObject:contact];
}
resultBlock(contacts);
}];
}
4. 重写 RCConversationViewController
的消息点击方法,来实现名片消息点击事件。
Objective C
- (void)didTapMessageCell:(RCMessageModel *)model {
if ([model.content isKindOfClass:[RCContactCardMessage class]]) {
RCContactCardMessage *cardMSg = (RCContactCardMessage *)model.content;
// 此处执行 APP 业务逻辑
return;
}
[super didTapMessageCell:model];
}