React-Native IM SDK 更新日志
大约 16 分钟
React Native 集成文档
React-Native IM SDK 更新日志
版本 V1.7.0 2024-12-5
新增特性
- 依赖的原生 SDK 升级到版本:iOS 4.11.0 和 Android 4.11.0。
- 更新服务器连接状态监听器
ChatConnectEventListener
,新增onOfflineMessageSyncStart
和onOfflineMessageSyncFinish
事件,表示从服务器拉取离线消息的开始和结束。 - 新增
ChatManager#getMessageCount
方法,用于获取数据库中的消息总数。
优化
- 更新聊天室监听器
ChatRoomEventListener
, 作废onMuteListAdded
,替换为onMuteListAddedV2
。 - 更新消息监听器
ChatMessageEventListener
, 移除作废的接口onMessagesRecalled
。
版本 V1.6.1 2024-9-12
修复
- 修复 Android 平台下编译报错找不到
CMakeLists.txt
的问题。
版本 V1.6.0 2024-8-30
新增特性
- 依赖的原生 SDK 升级到版本:iOS 4.8.1 和 Android 4.8.2。
- 新增
ChatManager.searchMessages
方法,支持一次搜索所有会话的多种类型的消息。 - 新增
ChatManager.searchMessagesInConversation
方法,支持一次搜索指定会话的多种类型的消息。 - 新增
ChatManager.removeMessagesWithTimestamp
方法,支持只删除服务器端的聊天室消息。 - 新增
ChatRoomManager.joinChatRoomEx
方法,支持加入聊天室时携带扩展信息、是否退出之前加入的全部聊天室。用户加入聊天室后,聊天室内其他成员收到ChatRoomEventListener.onMemberJoined
事件获取到扩展信息。 - 新增
ChatManager.getMessageCountWithTimestamp
方法,支持从数据库中获取指定会话指定时间段的消息数量。 - 新增
ChatOptions.loginExtraInfo
选项,支持设备登录时允许携带自定义消息,并将其传递给被踢的设备。被踢设备收到ChatConnectEventListener#onUserDidLoginFromOtherDeviceWithInfo
事件中会携带新设备的扩展信息。 - 原生平台新增错误码 407。
优化
- 原生平台优化弱网服务器连接成功率。
- 作废
ChatConnectEventListener
中的onUserDidLoginFromOtherDevice
事件,由 onUserDidLoginFromOtherDeviceWithInfo 替代。 - 作废
fetchHistoryMessages
接口,由 fetchHistoryMessagesByOptions 替代。 - 作废
joinChatRoom
接口,由 joinChatRoomEx 替代。
修复
原生平台进行了如下修复:
- 修复服务端获取好友列表(包含好友备注)时,在好友列表无变化时,第二次请求获取不到数据的问题。
- 修复特殊情况下附件发送失败,消息仍然成功发送的问题。
- 修复拉取漫游消息时 nextkey 错误的问题。
- 修复拉黑联系人时缓存未及时更新的问题。
- 修复退出登录再登录后推送可能不工作的问题。
版本 V1.5.1 2024-7-2
修复
修复原生平台以下问题:
- Android:修复部分场景下,用户升级数据库后,在同一个进程下登录新的用户,构建数据库表失败的问题。
- iOS:从服务端拉取群组时,不再先清除本地群组,而是将拉取的群组与本地对比,将本地现有群组进行更新,将新增部分在本地插入。若要清除本地群组信息,可以调用
IEMGroupManager#cleanAllGroupsFromDB
方法。
版本 V1.5.0 2024-6-2
新增特性
- 撤回消息的方法
recallMessage
中新增扩展参数,支持消息撤回时携带自定义信息。 - 添加消息撤回事件
onMessagesRecalledInfo
,作废原来的事件onMessagesRecalled
。
修复
原生平台修复以下问题:
- 服务端获取好友列表(包含好友备注)时,在好友列表无变化时,第二次请求获取不到数据的问题。
- 特殊情况下附件发送失败,消息仍然成功发送的问题。
- 拉取漫游消息时
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#onTokenDidExpire
和ChatConnectEventListener#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
新增特性
- 依赖的原生 SDK 升级到版本(
iOS
4.2.0 和Android
4.2.1)。添加原生 SDK 提供的新功能。 - 新增设置好友备注功能。
- 新增
ChatContactManager.fetchAllContacts
和ChatContactManager.fetchContacts
方法分别从服务器一次性和分页获取好友列表,每个好友对象包含好友的用户 ID 和好友备注。 - 新增
ChatContactManager.getContact
方法从本地获取单个好友的用户 ID 和好友备注。 - 新增
ChatContactManager.getAllContacts
方法从本地一次性获取好友列表,每个好友对象包含好友的用户 ID 和好友备注。 - 新增
ChatMessage.isBroadcast
属性用于判断通该消息是否为聊天室全局广播消息。可通过调用 REST API 发送聊天室全局广播消息。 - 新增
ChatGroupManager.fetchJoinedGroupCount
方法用于从服务器获取当前用户已加入的群组数量。 - 申请入群被拒绝的回调
EMGroupEventHandler#onRequestToJoinDeclinedFromGroup
中新增decliner
和applicant
参数表示申请者和拒绝者的用户 ID。
版本 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.kickDevice
和ChatClient.kickAllDevices
方法中添加 token 参数可使用用户 token 将指定用户的某个或全部的登录设备踢下线。 - 更新监听器:
ChatEvents.ChatConnectEventListener.onUserDidLoginFromOtherDevice
:添加deviceName
参数。ChatEvents.ChatConnectEventListener
:添加onUserDidRemoveFromServer
、onUserDidForbidByServer
、onUserDidChangePassword
、onUserDidLoginTooManyDevice
、onUserKickedByOtherDevice
和onUserAuthenticationFailed
事件通知。ChatEvents.ChatConnectEventListener.onDisconnected
:删除代码参数。ChatEvents.ChatMultiDeviceEventListener
:添加onMessageRemoved
事件。ChatEvents.ChatMultiDeviceEventListener
:添加onConversationEvent
事件。ChatEvents.ChatMessageEventListener
:添加onMessageContentChanged
事件。ChatRoomEventListener.onRemoved
:添加reason
参数。
- 更新以下数据对象:
ChatConversation
:添加isPinned
和pinnedTime
属性。ChatMessage.ChatMessageType
:添加COMBINE
类型消息正文。ChatMessage
:添加receiverList
属性。- 创建发送消息:添加
secret
参数。 ChatMessage.ChatMessageBody
:添加lastModifyOperatorId
、lastModifyTime
和modifyCount
属性。ChatOptions
:添加enableEmptyConversation
、customDeviceName
和customOSType
属性。ChatEvents.ChatMultiDeviceEvent
:添加CONVERSATION_PINNED
、CONVERSATION_UNPINNED
和CONVERSATION_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
新增特性
- 原生平台 Android 和 iOS 的 SDK 升级到 v4.0.2。
- 新增
ChatClient.version
属性用于获取当前 SDK 的版本号。 - 新增
ChatGroupManager.setMemberAttribute
方法用于设置单个群组成员的属性。 - 新增
ChatGroupManager.fetchMemberAttributes
方法用于从服务器获取单个群成员的所有自定义属性以及根据属性 key 获取多个群成员的自定义属性。 - 添加
ChatManager.fetchHistoryMessagesByOptions
根据消息拉取参数配置类(ChatFetchMessageOptions
)从服务器分页获取指定会话的历史消息。ChatFetchMessageOptions
类中包括起始时间戳、消息类型和消息发送方等参数。 - 新增
ChatManager.deleteMessagesWithTimestamp
方法实现删除指定时间段内的本地消息。 - 新增
ChatGroupEventListener.onMemberAttributesChanged
事件,在单个群成员的属性发生变更时,群内其他成员会收到该事件。 - 新增
ChatConnectEventListener.onAppActiveNumberReachLimit
事件,在应用程序的日活跃用户数量(DAU)或月活跃用户数量(MAU)达到上限时触发该事件。 - 新增日志回调接口
handler
。
优化
- 删除敏感信息。
- 优化
ChatManager.fetchHistoryMessages
方法,更新接口声明。 - 优化 iOS 文件类型的消息,当发送消息时本地路径带有
file://
时发送成功。
修复
- 修复更新 token 方法
renewAgoraToken
中的问题。 - 修复 Android 平台发送视频消息失败的问题。
版本 V1.1.1 2023-3-8
修复
修复调用 ChatGroupManager#fetchJoinedGroupsFromServer
方法时获取加入的公开群的扩展属性为空的问题。
版本 V1.1.0 2023-2-24
新增特性
- 依赖的原生平台
iOS
和Android
的 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
兼容性变更
- 以下方法进行了重命名:
deleteRemoteConversation
方法重命名为removeConversationFromServer
。loadAllConversations
方法重命名为getAllConversations
。getConversationsFromServer
方法重命名为fetchAllConversations
。getUnreadMessageCount
方法重命名为getUnreadCount
。fetchLatestMessage
方法重命名为getLatestMessage
。fetchLastReceivedMessage
方法重命名为getLatestReceivedMessage
。unreadCount
方法重命名为getConversationUnreadCount
。getMessagesFromTime
方法重命名为getMessageWithTimestamp
。- 白名单和黑名单相关的方法名进行了重命名:
- 白名单相关的方法名中的
WhiteList
修改为AllowList
,如getGroupWhiteListFromServer
修改为getGroupAllowListFromServer
; - 黑名单相关的方法名中的
BlackList
修改为BlockList
,如getGroupBlackListFromServer
修改为getGroupBlockListFromServer
。
- 白名单相关的方法名中的
- 删除了以下方法:
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 第一个正式发布的版本,包含以下功能:
- 在单聊、群聊、聊天室和子区中发送和接收消息;
- 管理会话和消息;
- 管理群组和聊天室;
- 用户在线状态订阅;
- 消息表情回复;
- 管理子区等。
关于详细功能概述请参见: 产品概述.
具体集成请参考以下文档: