-
Notifications
You must be signed in to change notification settings - Fork 86
v4.0 pre releases changelog
Lee Yeh edited this page May 17, 2018
·
1 revision
4.0.0-rc.0 (2018-05-11)
- 修复 IE10 兼容问题。
- 更新了一些令人疑惑的异常信息(
error.message
)。
- 断线重连时优先尝试未连接过的服务器从而改善某些情况下的重连速度。
-
部分异常的
error.message
被更新了。这是一个不兼容的改动,考虑到开发者可能会对
error.message
进行字符串匹配。我们建议使用error.code
或error.name
进行异常匹配与处理。请注意: 今后对
error.message
的改动将不被认为是不兼容的改动。
4.0.0-beta.5 (2018-04-13)
- 修复了多个导致切换用户时连接状态异常的问题。
-
支持按照富媒体消息类型查询历史消息。
Conversation#queryMessages
方法增加了type
参数用于指定查询的消息的类型示例
// 限定查询图片消息 conversation .queryMessage({ type: ImageMessage.TYPE, }) .then(console.log) .catch(console.error);
-
新增枚举
Event
。SDK 派发的事件的名称是全小写风格的字符串。当事件的名称由多个单词组成时,全小写风格的命名会很难辩识(例如unreadmessagescountupdate
)。SDK 现在提供了事件常量枚举Event
,你可以使用Event.UNREAD_MESSAGES_COUNT_UPDATE
来代替unreadmessagescountupdate
了。 -
引入了更加可靠的通知机制。在断线期间发生的
INVITED
与KICKED
事件,现在会在断线重连成功后收到。
- 不再支持下列运行环境(SDK 应该仍能在这些环境下工作,但我们不再对其进行测试了):
- Chrome < 45
- iOS < 9.3
- 修复了查询得到的对话中自定义的 Date 类型的属性没有被正确解析为 Date 的问题。
- 修复了当连接不可用时,调用
IMClient#close
方法会抛异常的问题。
- 支持对话属性更新通知:
-
Conversation
、ChatRoom
与ServiceConversation
的属性现在会自动更新,并增加了infoupdated
事件。 - 相应的,
IMClient
增加了conversationinfoupdated
事件。
-
-
Realtime#createIMClient
方法的第二个参数options
增加了用于单点登录的tag
与isReconnect
选项。原第三个参数tag
已被废弃。
- 移除了对 Bower 的支持,请使用 npm 或 Yarn。
- 新增对话成员角色功能,对话成员支持区分「管理员」与「成员」等不同角色。为了支持该功能,我们增加了
ConversationMemberInfo
类用来存储对话成员的属性。相关的 API 有:-
Conversation
与ChatRoom
增加了#getAllMemberInfo
与#getMemberInfo
方法用于查询用户的角色信息。 -
Conversation
与ChatRoom
增加了#updateMemberRole
方法用于设置用户的角色。 - 增加了
ConversationMemberRole
枚举,包含了内置的MANAGER
与MEMBER
两种角色。
-
- 新增对话黑名单与禁言功能:
-
Conversation
、ChatRoom
与ServiceConversation
增加了#blockMembers
、#unblockMembers
与#queryBlockedMembers
方法。 -
Conversation
、ChatRoom
与ServiceConversation
增加了#muteMembers
、#unmuteMembers
与#queryMutedMembers
方法。 -
Realtime#createIMClient
方法增加了指定黑名单的签名方法的参数clientOptions.blacklistSignatureFactory
。
-
- 为不同的对话类补充了更多相应的 API:
-
IMClient#getChatRoomQuery
与IMClient#getServiceConversationQuery
方法 -
ServiceConversation#subscribe
与ServiceConversation#unsubscribe
方法
-
- 所有支持批量操作对话成员的方法(包括已经存在 add/remove,新增的 block/unblockMembers、mute/unmuteMembers),均支持部分成功。可以在成功的结果中得到对哪些成员的操作成功了,对哪些成员的操作失败了以及对应的失败原因。
- 作为批量操作对话成员支持部分成功的副作用,
Conversation
与ChatRoom
的#add
与#remove
方法现在不再返回当前的 Conversation 实例,而是返回一个包含部分成功与失败信息的PartiallySuccess
对象。
- 修复了将服务号标记为已读不生效的问题。
- 支持微信小游戏。
- 修复了断线重连后,当前用户会「变成」一个匿名用户的问题。
- 修复了创建 unique 对话时,尽管内存中已经存在了该对话,仍然会得到一个新实例的问题。
- 支持临时对话(TemporaryConversation)。临时对话是一种有有效期的对话,更多关于临时对话的的说明请参考《实时通信服务总览 - 临时对话》。
- 拆分了对话的概念。
- SDK 现在暴露了四种不同的对话类:
- 普通对话(
Conversation
) - 聊天室(
ChatRoom
) - 服务号(
ServiceConversation
) - 临时对话(
TemporaryConversation
)
- 普通对话(
- 相应的,
IMClient
提供了三种创建对话的方法(服务号不支持在客户端创建):IMClient#createConversation
IMClient#createChatRoom
IMClient#createTemporaryConversation
- SDK 现在暴露了四种不同的对话类:
- 改善了小程序中的性能
- 使用二进制帧通讯,减少流量消耗。
- 自动感知网络状态变化从而获得更及时的重连。
- 支持私有部署。
- 重新设计了对话与消息的序列化方法。现在在小程序中能够直接将 Conversation 与 Message 实例作为 data 设置给视图层使用了。
-
AVMessage
接口原有的用来获取消息内容的toJSON
方法现在改名为getPayload
。内置的Message
类及其子类均已更新,如果使用富文本消息插件(leancloud-realtime-plugin-typed-messages),需要更新插件至 v3.0.0。 -
Message
类及其子类重新实现了toJSON
方法用于获取该消息的有效信息。 -
Conversation
类增加了toJSON
方法用于获取该对话的有效信息。
-
- 解决了与序列化 Conversation 抛循环引用异常相关的问题,包括小程序中无法
console.log
Conversation 的问题。
- 重命名
Conversation#mentioned
属性为Conversation#unreadMessagesMentioned
。
- 修复了某些情况下登录后
unreadmessagescountupdate
或message
等事件没有派发的问题。 - 修复了被服务端踢下线后链接没有正确断开的问题。
- 消息支持提及(@)对话中的成员。
- 增加了
Message#setMentionList
与Message#mentionAll
方法用于指定消息提及的对话成员。 - 在收到消息时可以通过
Message#mentioned
属性判断当前用户是否被提及,通过Message#mentionList
与Message#mentionedAll
属性获取详细的信息。 - 增加了
Conversation#mentioned
属性(已在 alpha.2 中改为unreadMessagesMentioned
)指示当前用户是否在对话中被提及。该属性会在unreadmessagescountupdate
事件发生时被更新,调用Conversation#read
方法会重置该属性。
- 增加了
- 支持发送接收二进制消息。
- 增加了
BinaryMessage
,可以通过ArrayBuffer
构造。
- 增加了
- 查询历史消息接口(
Conversation#queryMessage
)现在支持按照从旧到新的方向查询,可以实现弹幕等需求。- 增加了
direction
选项,其值为MessageQueryDirection.NEW_TO_OLD
或MessageQueryDirection.OLD_TO_NEW
。 - 增加了方向的概念后,原先指定查询区间的参数会产生歧义,这些参数因此被重新命名了:
-
beforeTime
->startTime
-
beforeMessageId
->startMessageId
-
afterTime
->endTime
-
afterMessageId
->endMessageId
-
- 增加了
startClosed
与endMessageId
选项用于指定查询区间的开闭。
- 增加了
-
初始化
Realtime
现在需要appKey
参数。示例
const realtime = new Realtime({ appId: 'YOUR_APP_ID', + appKey: 'YOUR_APP_KEY', });
-
现在所有异步 API 的异常都是以异步的方式抛出。我们还更新了 API 文档,标出了 API 的异步属性。
示例
// before try { conversation.send(message); } catch (error) { // hanlde `Connection unavailable` error } // after conversation.add(members).catch(error => { // hanlde `Connection unavailable` error });
-
为了更好的隔离服务,我们为每个应用提供了独立的域名。对于小程序用户,请前往 《小程序域名白名单配置》 更新域名白名单。
-
移除了 v3 中被标记为废弃的 API,包括:
移除 API 列表
-
IMClient
-
#markAllAsRead
方法 -
createConversation
的options.attributes
参数 -
unreadmessages
事件
-
-
Conversation
-
attributes
属性 -
#setAttributes
、#setAttribute
、#setName
与#markAsRead
方法 -
receipt
事件
-
-
ConversationQuery
-
#withLastMessages
方法
-
-
Message
-
needReceipt
与transient
属性 -
#setNeedReceipt
与#setTransient
方法
-
-
- 支持与 LeanCloud 用户系统集成。
Realtime#createIMClient
方法现在支持使用一个已登录的AV.User
登录 IM,详见 相关文档。