React-Native IM SDK 更新日志

大约 16 分钟

React-Native IM SDK 更新日志

版本 V1.7.0 2024-12-5

新增特性

  • 依赖的原生 SDK 升级到版本:iOS 4.11.0 和 Android 4.11.0。
  • 更新服务器连接状态监听器 ChatConnectEventListener,新增 onOfflineMessageSyncStartonOfflineMessageSyncFinish 事件,表示从服务器拉取离线消息的开始和结束
  • 新增 ChatManager#getMessageCount 方法,用于获取数据库中的消息总数。

优化

  • 更新聊天室监听器 ChatRoomEventListener, 作废 onMuteListAdded,替换为 onMuteListAddedV2
  • 更新消息监听器 ChatMessageEventListener, 移除作废的接口 onMessagesRecalled

版本 V1.6.1 2024-9-12

修复

  • 修复 Android 平台下编译报错找不到 CMakeLists.txt 的问题。

版本 V1.6.0 2024-8-30

新增特性

优化

修复

原生平台进行了如下修复:

  • 修复服务端获取好友列表(包含好友备注)时,在好友列表无变化时,第二次请求获取不到数据的问题。
  • 修复特殊情况下附件发送失败,消息仍然成功发送的问题。
  • 修复拉取漫游消息时 nextkey 错误的问题。
  • 修复拉黑联系人时缓存未及时更新的问题。
  • 修复退出登录再登录后推送可能不工作的问题。

版本 V1.5.1 2024-7-2

修复

修复原生平台以下问题:

  • Android:修复部分场景下,用户升级数据库后,在同一个进程下登录新的用户,构建数据库表失败的问题。
  • iOS:从服务端拉取群组时,不再先清除本地群组,而是将拉取的群组与本地对比,将本地现有群组进行更新,将新增部分在本地插入。若要清除本地群组信息,可以调用 IEMGroupManager#cleanAllGroupsFromDB 方法。

版本 V1.5.0 2024-6-2

新增特性

修复

原生平台修复以下问题:

  • 服务端获取好友列表(包含好友备注)时,在好友列表无变化时,第二次请求获取不到数据的问题。
  • 特殊情况下附件发送失败,消息仍然成功发送的问题。
  • 拉取漫游消息时 nextkey 错误的问题。

版本 V1.4.0 2024-5-7

新增特性

  • 新增 ChatManager#deleteAllMessageAndConversation 方法,用于清空当前用户的聊天记录,包括消息和会话,同时可以选择是否清除服务端的聊天记录。
  • 新增根据搜索范围搜索消息:根据关键字搜索消息时,可以选择 ChatMessageSearchScope 中的搜索范围。
    • ChatMessageSearchScope:包含三个消息搜索范围,即搜索消息内容、只搜索消息扩展信息以及同时搜索消息内容以及扩展信息。
    • ChatManager#getMsgsWithKeyword:根据搜索范围搜索所有会话中的消息。
    • ChatManager#getConvMsgsWithKeyword:根据搜索范围搜索当前会话中的消息。
  • 支持会话标记功能。
    • ChatConversationFetchOptions 从服务器获取会话的选项,可以用来回去置顶会话或者是标记后的会话。
    • ChatManager#addRemoteAndLocalConversationsMark:标记会话。
    • ChatManager#deleteRemoteAndLocalConversationsMark:取消标记会话。
    • ChatManager#fetchConversationsByOptions:根据 ChatConversationFetchOptions 选项从服务器分页查询会话列表。
    • ChatConversation#marks:获取本地单个会话的所有标记。
    • ChatMultiDevicesEvent#CONVERSATION_UPDATE_MARK:多设备场景下的会话标记事件。当前用户在一台登录设备上更新了会话标记,包括添加和移除会话标记,其他登录设备会收到该事件。
  • 新增错误码 706,表示聊天室所有者不允许离开聊天室。若初始化时,ChatOptions#isChatRoomOwnerLeaveAllowed 参数设置为 false,聊天室所有者调用 leaveChatRoom 方法离开聊天室时会提示该错误。
  • 支持聊天室漫游消息
  • 新增 ChatOptions#useReplacedMessageContents 开关。开启后,发送消息时如果被内容审核进行了内容替换,发送方可以收到替换后的内容。
  • 新增置顶消息功能。
    • 新增 ChatManager#pinMessage 方法,用于置顶消息。
    • 新增 ChatManager#unpinMessage 方法,用于取消置顶消息。
    • 新增 ChatManager#fetchPinnedMessages 方法,从服务器获取指定会话的置顶消息。
    • 新增 ChatConversation#getPinnedMessages 方法,返回会话下的所有置顶消息。
    • 新增 ChatMessagePinInfo 类,包含消息置顶的操作者以及置顶时间。
    • 新增 ChatMessage#pinInfo 方法,展示消息的置顶详情。
    • 新增 ChatMessageEventListener#onMessagePinChanged 事件。当用户在群组或聊天室会话进行置顶操作时,群组或聊天室中的其他成员会收到该回调。
  • 新增 ChatOptions#messagesReceiveCallbackIncludeSend 开关。开启后,在 ChatMessageEventListener#onMessagesReceived 回调里增加发送成功的消息。
  • 消息修改回调 ChatMessageEventListener#onMessageContentChanged 中支持返回通过 RESTful API 修改的自定义消息

优化

  • 支持使用消息 body 完成单条转发,无需重新上传附件。
  • 在部分场景下,降低接收到大量群成员事件通知时获取群组详情的次数。
  • 聊天室成员进出时更新聊天室成员人数,使人数更新更及时准确。
  • 优化 token 登录时的错误提示信息,使错误提示更精细。
  • 优化将所有会话置为已读的时间。
  • 优化 SDK 内部随机取服务器地址的逻辑,提升请求成功率。
  • 优化进出聊天室超时时间。
  • 优化部分场景下连接失败后重连的逻辑。
  • 优化附件类型消息发送时中的附件上传,支持分片上传。
  • 统一 Agora Token 和 EaseMob Token 登录方式:ChatClient#loginWithAgoraToken 接口废弃,统一使用 ChatClient#login 接口。此外,新增 EaseMob Token 即将过期及已过期的回调,即 EaseMob Token 已过期或有效期过半时也返回 ChatConnectEventListener#onTokenDidExpireChatConnectEventListener#onTokenWillExpire 回调。
  • 优化发消息时重试的逻辑。
  • Android/iOS SDK 移除网络请求时对 NetworkOnMainThreadException 异常的捕获。
  • 数据库升级逻辑优化。
  • 单个日志文件大小由 2 MB 提升到 5 MB。
  • iOS 平台中增加了隐私协议 PrivacyInfo.xcprivacy
  • Android 平台适配 Android 14 Beta:适配以 Android 14 为目标平台时动态注册广播接收者必须设置 RECEIVER_EXPORTED 或者 RECEIVER_NOT_EXPORTED 的规定。
  • 作废接口说明:
    • getMessagesWithKeyword: getMsgsWithKeyword 替换该接口。
    • getMessages: getMsgs 替换该接口。
    • getMessageWithTimestamp: getMsgWithTimestamp替换该接口。
    • getMessagesWithMsgType: getConvMsgsWithMsgType替换该接口。
    • searchMsgFromDB: getMsgsWithMsgType替换该接口。

修复

  • 修复修改消息后,离线用户上线后拉取历史消息,消息体中缺乏 from 属性的问题。
  • 特殊场景下,SDK 退出后再登录会丢失聊天室监听事件问题。
  • 修复网络恢复时重连 2 次的问题。
  • 修复未登录时调用 leaveChatroom 方法返回的错误提示不准确。
  • 部分场景下群成员人数计算重复问题。
  • 修复数据上报模块偶现的崩溃问题。
  • 修复部分场景下调用 ChatManager#updateMessage 方法更新消息时导致的崩溃问题。

版本 V1.3.0 2024-1-4

新增特性

版本 V1.2.1 2023-8-16

修复

  • 移除创建消息对象的参数 secret。该参数由服务器生成,在发送消息成功之后会获取到。

版本 V1.2.0 2023-8-16

新增特性

  • React-Native 从 0.66.5 升级到 0.71.11。
  • 依赖的原生 SDK(iOS 和 Android)升级到版本 4.1.1。添加原生 SDK 提供的新功能。
  • 新增 ChatManager.fetchConversationsFromServerWithCursor 方法从服务器分页获取会话列表
  • 新增置顶服务器会话的功能
    • 新增 ChatManager.pinConversation 方法,实现置顶或取消置顶服务器会话;
    • 新增 ChatManager.fetchPinnedConversationsFromServerWithCursor 从服务器分页获取置顶会话列表。
  • 新增 ChatManager.modifyMessageBody 方法,用于修改本地消息或服务器端消息。
  • 新增消息合并转发功能
    • 新增 ChatMessage.createCombineMessage 方法构建合并消息。
    • 新增 ChatManager.fetchCombineMessageDetail 方法获取合并消息的信息。
  • 新增自定义登录设备的名称和平台的功能
  • 新增 ChatPushManager.selectPushTemplate 方法基于自定义推送模板进行离线推送。
  • 新增 ChatPushManager.fetchSelectedPushTemplate 获取选定的推送模板以进行离线推送。
  • ChatClient.getLoggedInDevicesFromServer 方法中添加 token 参数可使用用户 token 获取在线设备列表。
  • ChatClient.kickDeviceChatClient.kickAllDevices 方法中添加 token 参数可使用用户 token 将指定用户的某个或全部的登录设备踢下线
  • 更新监听器:
    • ChatEvents.ChatConnectEventListener.onUserDidLoginFromOtherDevice:添加 deviceName 参数。
    • ChatEvents.ChatConnectEventListener:添加 onUserDidRemoveFromServeronUserDidForbidByServeronUserDidChangePasswordonUserDidLoginTooManyDeviceonUserKickedByOtherDeviceonUserAuthenticationFailed 事件通知。
    • ChatEvents.ChatConnectEventListener.onDisconnected:删除代码参数。
    • ChatEvents.ChatMultiDeviceEventListener:添加 onMessageRemoved 事件。
    • ChatEvents.ChatMultiDeviceEventListener:添加 onConversationEvent 事件。
    • ChatEvents.ChatMessageEventListener:添加 onMessageContentChanged 事件。
    • ChatRoomEventListener.onRemoved:添加 reason 参数。
  • 更新以下数据对象:
    • ChatConversation:添加 isPinnedpinnedTime 属性。
    • ChatMessage.ChatMessageType:添加 COMBINE 类型消息正文。
    • ChatMessage:添加 receiverList 属性。
    • 创建发送消息:添加 secret 参数。
    • ChatMessage.ChatMessageBody:添加 lastModifyOperatorIdlastModifyTimemodifyCount 属性。
    • ChatOptions:添加 enableEmptyConversationcustomDeviceNamecustomOSType 属性。
    • ChatEvents.ChatMultiDeviceEvent:添加 CONVERSATION_PINNEDCONVERSATION_UNPINNEDCONVERSATION_DELETED事件。
  • 添加数据对象: ChatMessage.ChatCombineMessageBody:添加组合消息正文对象。

优化

  • 优化断线通知,分离出服务器主动断线的通知,用户可以具体处理服务器主动断线的原因。
  • 使用 commitlint 优化 git 提交规范,确保提交的代码符合规范。
  • 使用 lefthook 优化 git commit。添加使用 gitleaks 检查敏感信息。
  • ChatManager 对象中,deleteAllMessages 重命名为 deleteConversationAllMessages
  • ChatEvents.ChatRoomEventListener 对象中,onRemoved 重命名为 onMemberRemoved
  • ChatEvents.ChatGroupEventListener 对象中,onUserRemoved 重命名为 onMemberRemoved
  • ChatEvents.ChatRoomEventListener 对象中,onChatRoomDestroyed 重命名为 onDestroyed
  • ChatEvents.ChatGroupEventListener 对象中,onGroupDestroyed 重命名为 onDestroyed
  • 弃用 ChatManager.fetchAllConversations,改用 ChatManager.fetchConversationsFromServerWithCursor

修复

修复 Android 平台下由于添加表情响应导致应用程序崩溃的问题。

版本 V1.1.2 2023-6-28

新增特性

优化

  • 删除敏感信息。
  • 优化 ChatManager.fetchHistoryMessages 方法,更新接口声明。
  • 优化 iOS 文件类型的消息,当发送消息时本地路径带有 file:// 时发送成功。

修复

  • 修复更新 token 方法 renewAgoraToken 中的问题。
  • 修复 Android 平台发送视频消息失败的问题。

版本 V1.1.1 2023-3-8

修复

修复调用 ChatGroupManager#fetchJoinedGroupsFromServer 方法时获取加入的公开群的扩展属性为空的问题。

版本 V1.1.0 2023-2-24

新增特性

  • 依赖的原生平台 iOSAndroid 的 SDK 升级为 v4.0.0 版本。
  • 新增 ChatManager#fetchConversationsFromServerWithPage 方法实现从服务器分页获取会话列表。
  • 新增 ChatMessage#messagePriority 方法实现聊天室消息优先级功能,确保高优先级消息优先处理。

优化

  • 移除测试数据的敏感信息。
  • ChatGroupManager 类中的方法 inviterUser 重命名为 inviteUser
  • ChatMultiDeviceEvent 枚举类型 GROUP_ADD_USER_WHITE_LIST 重命名为 GROUP_ADD_USER_ALLOW_LIST
  • ChatMultiDeviceEvent 枚举类型 GROUP_REMOVE_USER_WHITE_LIST 重命名为 GROUP_REMOVE_USER_ALLOW_LIST

修复

  • 修复原生平台部分不安全代码。
  • 修复获取会话可能失败的问题。
  • 修复回调方法可能多次进入主线程导致死锁的问题。该问题只可能发生在 iOS 平台。

版本 V1.0.11 Dev 2022-12-12

优化

依赖的 iOS 和 Android SDK 升级为 3.9.9 版本。

修复

  • 修复极端情况下 SDK 崩溃的问题。
  • 修复某些场景下调用 updateMessage 方法导致的内存与数据库中的消息不一致问题。
  • 适配 Android 12,修复依赖环信即时通讯云 SDK 的 APK 在 Android 12 版本的部分手机上第一次安装后打开时出现异常弹框的问题。

版本 V1.0.10 Dev 2022-10-13

修复

修复 Android 平台进行 JSON 转换可能出现的超限问题。该问题影响返回数组类型数据的接口,若此类接口返回的数据元素超过 50 个,则可能抛出异常。

版本 V1.0.9 Dev 2022-10-08

新增特性

ChatGroupEventListener 中新增两个事件:

  • onDetailChanged:群组详情变更事件。
  • onStateChanged:群组禁用状态变更事件。

修复

修复聊天室自定义属性问题。

版本 V1.0.8 Dev 2022-09-30

新增特性

  • 新增聊天室自定义属性功能。
  • ChatOptions 类中新增 areaCode 参数限制连接边缘节点的范围。
  • ChatGroupOptions 中增加 isDisabled 属性显示群组禁用状态,需要开发者在服务端设置。该属性在调用 ChatGroupManager 中的 fetchGroupInfoFromServer 方法获取群组详情时返回。

修复

  • 修复极少数场景下,从服务器获取较大数量的消息时失败的问题。
  • 修复数据统计不正确的问题。
  • 修复极少数场景下打印日志导致的崩溃。

版本 V1.0.7 2022-09-07

兼容性变更

unSubscribe 方法重命名为 unsubscribe

新增特性

  • 新增 setConversationExtension 方法用于设置会话扩展。
  • 新增 insertMessage 方法插入消息。
  • 新增 deleteMessagesBeforeTimestamp 方法删除指定时间戳之前的消息。
  • 新增 getThreadConversation 方法获取或创建子区会话。
  • ChatConversation 类中添加 isChatThread 属性确认会话是否为子区会话。
  • 新增 ChatPushManager 类支持推送通知设置。
  • 新增 ChatPushConfig 类支持 FCM 推送配置。
  • ChatOptions 类中新增 pushConfig 方法支持推送初始化设置。
  • ChatClient 类中新增 updatePushConfig 方法支持推送配置更新。

优化

  • 依赖的原生的 SDK(iOS 和 Android)升级到 V1.0.7。
  • 监听方法调整为可选。
  • 更新发布脚本。
  • 更新 demo。

问题修复

修复相关方法中的 type 字段的 JSON 解析错误。

版本 V1.0.6 2022-7-22

兼容性变更

  1. 以下方法进行了重命名:
  • deleteRemoteConversation 方法重命名为 removeConversationFromServer
  • loadAllConversations 方法重命名为 getAllConversations
  • getConversationsFromServer 方法重命名为 fetchAllConversations
  • getUnreadMessageCount 方法重命名为 getUnreadCount
  • fetchLatestMessage 方法重命名为 getLatestMessage
  • fetchLastReceivedMessage 方法重命名为 getLatestReceivedMessage
  • unreadCount 方法重命名为 getConversationUnreadCount
  • getMessagesFromTime 方法重命名为 getMessageWithTimestamp
  • 白名单和黑名单相关的方法名进行了重命名:
    • 白名单相关的方法名中的 WhiteList 修改为 AllowList,如 getGroupWhiteListFromServer 修改为 getGroupAllowListFromServer
    • 黑名单相关的方法名中的 BlackList 修改为 BlockList,如 getGroupBlackListFromServer 修改为 getGroupBlockListFromServer
  1. 删除了以下方法:
  • getMessageById
  • insertMessage
  • appendMessage

新增特性

消息中新增 isOnline 字段。

优化

  • 更新了接口示例应用。
  • 依赖的 SDK(Android 和 iOS)升级至 V3.9.4。
  • React-Native 升级至 0.66.4 LTS 版本。
  • Android 平台无需再执行其他操作。
  • agora-react-native-chat 重命名为 react-native-agora-chat

修复

类型声明切入点不正确。

版本 V1.0.5 2022-6-21

这是 React Native SDK 第一个正式发布的版本,包含以下功能:

  • 在单聊、群聊、聊天室和子区中发送和接收消息;
  • 管理会话和消息;
  • 管理群组和聊天室;
  • 用户在线状态订阅;
  • 消息表情回复;
  • 管理子区等。

关于详细功能概述请参见: 产品概述.

具体集成请参考以下文档: