跳到主要内容

名片消息

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

提示

IMKit 默认会话页面未启用名片消息功能。如需要使用该功能,可集成 IMKit 名片插件,并提供需要展示和发送的数据。

(width=250) (width=250)

用法

IMKit 支持名片插件。导入名片插件模块后,扩展面板中会自动出现该功能入口。点击扩展面板中的个人名片会跳转至联系人列表页面(App 需要提供联系人列表)。

  • IMKit 5.1.8 之前,名片插件(ContactCard)仅支持以源码方式导入。
  • IMKit 5.1.8 及之后,名片插件(ContactCard)支持以源码方式或以 Framework 方式导入。

请根据应用程序集成 IMKit 的方式,选择使用 Framework 和源码导入小视频插件。请务必不要混用 Framework 和源码集成方式。

  • 导入名片插件 Framework(要求 SDK >= 5.1.8)

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

    pod 'RongCloudOpenSource/ContactCard','~> x.y.z'           #名片源码
提示

x.y.z 代表具体版本,请通过融云官网 SDK 下载页面或 CocoaPods 仓库等方式查询最新版本。

在导入名片插件模块后,您还需要为名片插件提供联系人列表。由于融云不提供用户信息托管维护服务,您需要通过 RCCCContactsDataSource 协议为 SDK 提供联系人列表。详见 RCContactCardKit.h

具体实现可参考以下步骤:

  1. 设置代理委托。

    [RCContactCardKit shareInstance].contactsDataSource = self;
  2. 实现代理方法。

    - (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);
    }];
    }
  3. 重写 RCConversationViewController 的消息点击方法,来实现名片消息点击事件。

    - (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 全局导航按钮颜色修改左上角按钮

RCKitConfigCenter.ui.globalNavigationBarTintColor = [UIColor whiteColor];