如何在融云 IMKit SDK 中实现发送个人名片功能

发布时间: 2019-07-24 16:08

回答:

为满足客户发送个人名片的功能需求,融云实现了个人名片的开源插件,开发者可下载插件直接集成使用,插件需要依赖于 IMKit ,目前只支持单聊、群聊,集成说明如下:

一、Android 个人名片插件集成

1、下载插件:https://github.com/rongcloud/plugin-contactcard-android

2、使用 Android Studio 导入 contactcard moudle

3、修改配置:

在 settings.gradle 中添加 'contactcard' 模块,如:include ': contactcard'

在应用的 build.gradle 中添加依赖, 如:api project(':contactcard')


二、iOS 个人名片插件集成

1、下载插件:https://github.com/rongcloud/plugin-contactcard-ios

2,将 RongContactCard.framework 添加到项目中

3,添加编译参数,编译参数:-ObjC

4,设置 RCContactCardKit 的 RCCCContactsDataSource 代理和 RCCCGroupDataSource 代理,并实现其代理方法(具体可以参考 Sealtalk 源码中 AppDelegate 中的代理设置和 RCDRCIMDataSource 的代理实现),建议在单例类中实现代理方法,保证整个app的声明周期内都能正常的使用名片功能

5,名片消息的点击事件处理,需要在 RCConversationviewController 的子类中重写

- (void)didTapMessageCell:(RCMessageModel *)model
方法,并对model里面的消息体进行判断处理 例如:
- (void)didTapMessageCell:(RCMessageModel *)model {
  [super didTapMessageCell:model];
  if ([model.content isKindOfClass:[RCContactCardMessage class]]) {
    //do something
  }
}


常见问题: 名片消息的头像为默认的蓝色头像,或者名片消息的用户名称为user<****>的样式:

先检查一下消息体内部的数据是不是有效的; 另外调用 RCIM 的 getUserInfoCache 方法从 SDK 缓存中获取该用户的信息,看看 SDK 内部缓存中的该用户信息是不是有效的