Skip to content

Releases: leancloud/js-realtime-sdk

v3.5.2

30 Jun 07:15
Compare
Choose a tag to compare

Bug Fixes

  • 修复了 TypeScript 定义文件无效的问题 (bb866f0)
  • 修复了在某些情况下,ConversationlastMessage 被修改或撤回后 updatedAt 时间不准确的问题 (6ab82db)

v3.5.1

20 Jun 10:51
Compare
Choose a tag to compare

Bug Fixes

  • Read: 修复了在某些情况下将会话标记为已读无法成功清除其未读消息数的问题 (89eb094)。

v3.5.0

15 Jun 12:42
Compare
Choose a tag to compare

Highlights

  • 消息撤回与修改:支持用户撤回或修改已发送的消息。
  • 富媒体消息摘要:支持在某些情况下以文字形式展示富媒体消息。

Features

消息撤回与修改

现在,用户可以在客户端通过 Conversation#recallConversation#update 方法撤回或修改已发送的消息了。撤回、修改消息后,该会话中的其他用户会立即通过 messagerecallmessageupdate 事件得到通知。

  • 增加 Conversation#recallConversation#update 方法
  • 增加 Conversation messagerecallmessageupdate 事件
  • 增加 IMClient messagerecallmessageupdate 事件

此外,我们还提供了云引擎 hook 允许你实现撤回控制策略,例如只允许在发送消息后一段时间内撤回。

富媒体消息摘要

富媒体消息在一些场景下需要以文本的形式展示,例如在会话列表页面显示最近一条消息时,红包消息需要显示为 [红包] 节日快乐。为了方便实现该功能,我们为 TypedMessage 增加了 summary 属性,视图层可以直接使用 message.summary 来得到字符串类型的「消息摘要」。SDK 内置的 TypedMessage 均已支持该功能。

其他

  • ConversationQuery: 增加了 existsdoesNotExist 方法

Bug Fixes

  • 修复了会话被删除后 SDK 无法正常派发未读消息数更新通知(unreadmessagescountupdate)的问题 (#548)

Miscellanies

  • 增加了对存储 SDK LiveQuery 功能的支持
  • 降低了客户端心跳频率,SDK 更加省电

v3.4.1

17 Apr 10:28
Compare
Choose a tag to compare

Bug Fixes

  • IMClient: 修复了收到在线消息时 unreadmessagescountupdate 事件回调的 conversations 参数不是数组的问题 (#547) (9df01d8)
  • Read: 修复了标记对话已读对系统消息不生效的问题 (#544) (28dcf50)

v3.4.0

06 Apr 15:40
Compare
Choose a tag to compare

Highlights

  • 消息已读回执:全面支持消息已读回执,包括单人聊天与多人聊天。
  • 新未读消息数更新事件:重新设计了更精确更友好的未读消息数更新机制。
  • 掉线通知:发送消息时可以指定其为「掉线消息」,掉线消息会延迟到该客户端掉线之后发送,从而实现「掉线通知」等需要用户在线状态的场景。
  • 网络离线状态:SDK 增加了网络「离线」状态。与之前的「断线」状态不同的是,处于离线状态时,SDK 不会试图进行重连直到网络恢复。这个状态的引入能加快网络变化时 SDK 的响应速度并降低用户的电量消耗。

Features

消息已读回执

为了更好的支持消息已读回执,标记会话已读的方法得到了重构,增加了 Conversation#read 方法,允许以任意的频率调用这个方法而无需担心达到单个客户端的每分钟命令数限额,因此用于批量标记的 IMClient#markAllAsRead 方法也被废弃。

  • 增加 Conversation#read 方法
  • 废弃 Conversation#markAsRead 方法,请使用 Conversation#read 方法
  • 废弃 IMClient#markAllAsRead 方法,请分别调用对应的 Conversation#read 方法

SDK 内置了对单聊的已读回执支持。Conversation 增加了 lastDeliveredAtlastReadAt 属性标记了该对话中最后一条已送达与已读的消息时间戳,可以通过 Conversation#fetchReceiptTimestamps 方法获取到这两个属性。对于在单聊中发送的需要回执的消息,当对方收到消息时,lastDeliveredAt 属性会得到更新,当对方标记会话已读时,lastReadAt 属性会得到更新。此外,由于 receipt 的含义发生了变化,我们还废弃了 Conversationreceipt 事件(请用 lastdeliveredatupdate 事件代替)。与之相关的 API 变化有:

  • 增加 Conversation#fetchReceiptTimestamps 方法
  • 增加 Conversation lastDeliveredAt 属性与 lastdeliveredatupdate 事件
  • 增加 Conversation lastReadAt 属性与 lastreadatupdate 事件
  • 废弃 Conversation receipt 事件,请使用 lastdeliveredatupdate 事件

新未读消息数更新事件

我们希望最大限度的减少开发者维护状态的工作量,因此我们重新设计了对话的未读消息数更新机制。我们增加了 unreadmessagescountupdate 事件,该事件会在任意对话的未读消息数发生变化的时候被派发,包括了:

  • 服务端更新了会话的未读消息数
  • 收到在线消息
  • 将会话标记未已读

开发者现在只需在接到 unreadmessagescountupdate 事件时刷新视图中对应的会话的未读消息数即可。之前在服务端更新会话的未读消息数时派发的 unreadmessages 事件因为不再需要被废弃。

  • 增加 IMClient unreadmessagescountupdate 事件
  • 废弃 IMClient unreadmessages 事件,请使用 unreadmessagescountupdate 事件

掉线通知

在一些即时互动的应用中,会话成员的在线状态是很重要的信息,用户加入或退出会话时可以主动广播自己的在线状态变化,但如果用户掉线了,会话中的其他成员将得不到及时的通知。为了解决这个问题,我们为发送消息方法增加了 will 发送选项指定消息为「掉线消息」,掉线消息会延迟到该客户端掉线之后自动发送。

  • 增加 Conversation#send 方法新的发送选项 sendOptions.will

网络离线状态

之前,SDK 通过维持心跳包来检测是否与服务器保持连接,在网络状态变化时 SDK 可能会需要几分钟的时间才能进入「掉线」状态,并会立即开始尝试重连,同样在网络恢复之后也可能需要几分钟才会开始下一次重连。SDK 引入了新的「离线」状态,在离线状态时,SDK 不会试图进行重连直到网络恢复。

在浏览器中,SDK 会通过 Network Information API 感知到网络的变化自动进入离线状态,在进入离线状态时会派发 offline 事件,在恢复在线时会派发 online 事件。在其他环境中可以通过调用 Realtime#pauseRealtime#resume 方法来手动进入或离开离线状态,可以实现实时通信在 App 被切到后台挂起、切回前台恢复等功能。

  • RealtimeIMClient 增加了 offlineonline 事件
  • 增加 Realtime#pauseRealtime#resume 方法

其他

  • Conversation#send 方法中的发送选项 sendOption.reciept 的拼写错误已被订正为 sendOption.receipt,错误的选项已被废弃。
  • 插件机制增加了 beforeMessageDispatch 扩展点,允许在 SDK 解析消息之后,派发消息之前,控制是否派发该消息。

v3.3.4

11 Jan 13:52
Compare
Choose a tag to compare

Bug Fixes

  • Conversation: 修复了 send 方法的 options.transient 不生效的问题 (#502) (f8c0b49)

v3.3.3

16 Dec 06:14
Compare
Choose a tag to compare
  • 修复 React Native 与小程序中访问 navigator.userAgent 导致异常的问题 (#469) (4a1abd7)

v3.3.2

14 Dec 09:36
Compare
Choose a tag to compare

Bug Fixes

v3.3.1

16 Nov 12:00
Compare
Choose a tag to compare

Bug Fixes

在 3.3.0 中send 方法增加了 options 参数,与消息内容无关的信息现在作为发送选项设置,但是遗漏了 transient(暂态)信息。在这个补丁中 transient(暂态)从消息的属性变为了发送选项。

  • Conversation:send 方法的 options 参数增加了 options.transient 参数,用于指定是否作为暂态消息发送 (#439) (9b4d2ef)
  • Message: 废弃了 Message#setTransient 方法与 Message 的 transient 属性,请使用 Conversation#send 方法的 options.transient 代替。请不要将是否为暂态作为区分某些消息的标记,可以使用富媒体消息的属性(attributes)或使用自定义消息类型代替。

v3.3.0

25 Oct 03:41
Compare
Choose a tag to compare

Features

  • 支持微信小程序 (#417) (5e138cc)
  • Conversation: 增加 system 属性,标识对话是否是系统对话 (#357) (075d508)
  • Conversation: send 方法新增参数 options,可选的参数包括
    • options.pushData:离线推送内容
    • options.priority:聊天室消息的优先级
    • options.reciept:是否需要送达回执
  • Message: 废弃了 Message#setNeedReciept 方法与 Message 的 needReciept 属性,推荐使用 Conversation#send 方法的 options.reciept 参数 (a38c481)
  • Error: 新增了 ErrorCode,用于判断捕获的异常 (#353) (bbdf608)
  • 增加 TypeScript 定义文件 (#373) (2e5da17)