跳到主要内容

名片消息

您可以通过 IMKit 名片插件发送个人名片,消息将出现在会话页面的消息列表组件中。插件默认发送的消息中包含名片消息内容对象 RCContactCardMessage(类型标识:RC:CardMsg)。

(width=250) (width=250)

用法​

提示

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)

    ruby
    pod 'RongCloudIM/ContactCard','~> x.y.z'           #名片 framework
  • 导入名片插件源码

    ruby
    pod '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];
}

发送名片消息​

用户点击输入栏右侧 + 号按钮可展开扩展面板,点击个人名片图标,即可发送名片。

extension(width=250)

定制化​

名片插件内部定义了名片消息内容类 RCContactCardMessage.h 与名片消息展示模板 RCContactCardMessageCell.h。

自定义名片消息的 UI​

名片消息使用 RCContactCardMessageCell 展示在消息列表中。如果需要调整内置消息样式,建议自定义消息 Cell,并将该自定义 Cell 提供给 SDK。IMKit 中所有消息模板都继承自 RCMessageCell,自定义消息 Cell 也需要继承 RCMessageCell。详见修改消息的展示样式。

您也可以直接替换 RongCloud.bundle 中文件消息展示模板中引用的样式资源、字符串资源和图标资源。详见 IMKit 源码 RCContactCardMessageCell.m 中引用的资源。

自定义个人名片页 UI​

您可以通过 IMKit 全局导航按钮颜色修改左上角按钮:

Objective C
RCKitConfigCenter.ui.globalNavigationBarTintColor = [UIColor whiteColor];