实时通信 2.0:对话 API 和多媒体消息

自去年 LeanCloud 发布实时通信服务之后,我们收到了很多用户反馈,经过工程师对需求的消化和对业务的提炼,我们很高兴今天正式发布了实时通信 2.0 版本。新版本除了继续坚持我们的设计理念(灵活、解耦、可组合、可定制),我们更主要地针对第一版用户使用中的痛点做了重点改进,增加了「对话」这一实体概念和相应的 API,帮助开发者更有效地管理消息的上下文。另外值得一提的是,新版本中提供的多媒体消息格式类,开发者可以更加快捷地发送音频、视频、文件和地理位置等富媒体消息。

对话

新版本中,我们用「对话」这一概念整合所有的聊天形式:单聊、群聊和开放聊天室。每一个对话对应数据存储中 _Conversation 表的一条记录,因此开发者可以随时获取自己最近参与对话列表,这解决了我们先前版本在这方面的不足。而且,基于 LeanCloud 强大的数据存储、查询的基础,开发者还可以对「对话」记录增加自定义属性,并通过自定义的查询获取。消息现在通过对话来索引和管理,除了以被动推的方式实时到达客户端之外,用户还可以主动拉取某一对话从任意时刻开始向前的消息记录。实时通信中所有的概念和机制都对开发者透明,尽可能多地满足开发者个性化的需求。更多关于对话的信息可以在 文档 中找到。

新版本的 iOS 发送消息示例:

AVIMMessage *message = [AVIMMessage messageWithContent:@"hello"];
[_conversation sendMessage:message callback:^(BOOL succeeded, NSError *error){
if (error) {
    // 出错了 :(
} else {
    // 成功!
}
}];

接收消息:

-(void)conversation:(AVIMConversation *)conversation didReceiveCommonMessage:(AVIMMessage *)message {
    // 下面的逻辑会把消息直接存入本地数据库缓存。注意:你完全可以根据自己的需要来决定实际如何处理
    [self saveMessageToDatabase:message callback:^(BOOL succeeded, NSError *error) {
        [[NSNotificationCenter defaultCenter] postNotificationName:LC_NOTIFICATION_MESSAGE_UPDATED object:conversation];
    }];
}


富媒体消息

在第一版中,我们提供的是一个纯粹的传输层接口,用户可以通过这个接口发送各种格式的消息,比如纯文本或是格式化的消息。这曾经引起了一部分开发者关于其是否可以发送多媒体消息的困惑。在这方面,回答当然是肯定的。第二版中,我们针对这方面的疑惑,增加有补充:一套可扩展的富媒体消息格式。目前我们提供:文本(TextMessage)、图片(ImageMessage)、音频(AudioMessage)、视频(VideoMessage)、位置(LocationMessage)消息。对于图片、音频和视频等二进制消息,我们包装了文件上传等必要步骤,简化开发者的使用步骤。另外针对个性化的需求,开发者还可以在这套消息体系下定义自己特殊的消息类型,满足个性化的需求。

我们此次发布包含所有平台(Android,iOS,WindowsPhone 和 Web)的 SDK,此外还包括 REST API 用于对对话数据进行增删改查、拉取消息记录和发送消息等功能。 文档 中包含了整套系统中的主要概念和机制,各个平台 SDK 的使用说明等。SDK 现在已经可以在 下载页面 获取,欢迎大家体验。

实时通信 2.0:对话 API 和多媒体消息》上有1条评论

  1. Pingback引用通告: 回顾 2015 LeanCloud 十大产品革新 | LeanCloud Blog

发表评论

电子邮件地址不会被公开。 必填项已用*标注