腾讯云即时通信 IM SDK 5.4.666 增强版本于2021年6月3日正式发布了。从该版本开始,原来的精简版(smart)SDK 改名为增强版(plus) SDK,原来的标准版 SDK 改名为基础版 SDK。后续新功能只在增强版上开发,基础版只做例行维护,推荐您升级到增强版实现更多更强大的功能。
新版本更新特性:
- 支持本地消息搜索、群&群成员搜索、好友搜索;
- 支持清空会话中的消息并保留会话;
- 相同平台下支持多个终端同时登录;
- 发送消息时可以指定该消息是否更新会话的最后一条消息。
本地搜索功能
增强版 IM SDK 增加了本地搜索能力,可以实现下图类似微信的搜索功能。
好友搜索
好友搜索 searchFriends可以搜索本地用户资料,支持搜索 userID、nickName、remark 字段。
群搜索和群成员搜索
群搜索的效果是,如果群名称匹配到了关键字则列表中的该条目 title 会高亮群名称匹配的关键字;如果群名称没有匹配到但是群 ID 或者群成员匹配到了关键字,则列表中该条目的 title 显示群名称,subTitle 会高亮群 ID 或者群成员匹配的关键字。这里需要把
searchGroups 和 searchGroupMembers 组合起来使用。
- searchGroups 搜索本地群组资料 ;
- searchGroupMembers 搜索本地群成员资料;
- 合并两者的结果,根据需求高亮匹配到的字段。
消息搜索
在搜索框输入关键字可以调用
searchLocalMessages 搜索本地消息。
- 支持全局消息搜索并按照会话分类;
- 支持分页搜索;
- 支持搜索指定会话中的消息。
聊天记录界面的展示通常分为如下图的几个场景:
| 图1:搜索聊天记录 |
| 图2:搜索更多聊天记录 |
| 图3:搜索指定会话的消息 |
集成方式
集成以上搜索功能有两个方案:
清空会话中的消息并保留会话
该版本增加了 clearC2CHistoryMessage 和 clearGroupHistoryMessage 接口,与 deleteMessages 接口一次只能删除有限的30条消息不同的是,新接口可以清空会话中的所有消息并保留会话。效果如下:
相同平台下支持多个终端同时登录
该版本支持一个帐号在同一个平台可以登录多个设备。比如在车机场景中,用户在 Android 手机上登录,并且该用户也可以在车载平板电脑(Android 系统)登录,来达到两端数据互通的目的。使用方式也特别简单,只需要在控制台上选择同平台的终端登录的数量即可,如下图:
发送消息时可以指定该消息是否更新会话的最后一条消息
正常情况下,每发送或者接收一条消息,会话列表就会显示最新一条消息的内容。但是在一些比如抢红包的实际场景中,是不希望把“xxx抢了红包”这种消息展示到会话的最后一条中的。消息在发送之前可以设置 setExcludedFromLastMessage 来达到这种效果,通常这类消息也不希望统计到未读计数中的,可配合 setExcludedFromUnreadCount 接口一起使用。
发送端
// 创建消息对象V2TIMMessage message = V2TIMManager.getMessageManager().createCustomMessage("user_x抢了红包".getBytes());// 该消息不计入会话 lastMsgmessage.setExcludedFromLastMessage(true);// 该消息不计入会话未读数message.setExcludedFromUnreadCount(true);// 发送消息V2TIMManager.getMessageManager().sendMessage(message, null, groupID, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, null, new V2TIMSendCallback<V2TIMMessage>() { @Override public void onError(int code, String desc) { Log.i(TAG, "send fail"); }
@Override public void onSuccess(V2TIMMessage v2TIMMessage) { Log.i(TAG, "send success"); }
@Override public void onProgress(int progress) {
}});
接收端
在收到消息时即为上图效果,会话列表中不希望展示“xxx抢了红包”,更不希望有未读数出现,但是进入聊天界面希望能展示“xxx抢了红包”的消息。
【1】Github下载源码:https://github.com/tencentyun/TIMSDK;
【2】IM 文档接口使用说明:https://cloud.tencent.com/document/product/269/56936;