分类目录归档:新功能

Android SDK 发布 4.7.7 版本,完全兼容 Android P

相信很多朋友都非常关注谷歌新推出来的 Android Pie 系统,在这一版本中谷歌加入了很多新的功能和 API,但是对我们开发者影响最大的可能是其完全取消了 Apache HTTP 的支持。

虽然这是一个早在 Android 6.0 即引入的变更(详见这里:取消支持 Apache HTTP 客户端),但彼时我们还是可以通过在 build.gradle 中增加如下声明而得以继续使用它:

android {
    useLibrary 'org.apache.http.legacy'
}

而从 Android P 开始,Apache HTTP 客户端变得完全不可用,依赖于它的应用在 Android 9 或更高版本上将启动失败并显示 NoClassDefFoundError 错误。

为了应对这一变化,我们在 10 月底升级了 Android SDK 至 4.7.7 版本,彻底去掉了 Apache HTTP 的使用,完全兼容 Android P 系统,请大家及时升级。

同时,再次提醒一下,我们的 Java Unified SDK 自项目初始就不依赖 Apache HTTP,所以也是天然支持 Android P 的,并且以后老的 Android SDK 会进入只修问题不加功能的维护状态(至 2019 年 9 月停止维护),LeanCloud Android 团队会把精力投入到 Java Unified SDK 的开发之中,请大家尽早切换使用。

Java Unified SDK 开放测试通知

9 月伊始,我们新推出了一个 Java 平台的统一 SDK(Java Unified SDK)。该 SDK 可以在 Java、Android 和 LeanCloud 云引擎三种环境下运行,支持数据存储、LiveQuery、即时通讯、云函数、推送和混合推送等全部核心功能,并且和老版本一样开放所有源代码(代码见这里)。今后 LeanCloud 安卓开发团队会以开发维护 Java Unified SDK 为主,老版本 Android SDK 则会进入维护状态,并将于 2019 年 9 月底停止维护。在此期间我们主要做 bugfix,不再增加新功能,因此建议大家尽快迁移到 Java Unified SDK 上来。

为什么我们要新推一个 SDK

一份代码,支持多个平台
老版本 SDK 因为历史原因,Android 平台和纯 Java 平台(在云引擎中使用)是两套完全分开的代码,功能有差异,接口不统一,维护比较困难。新的 SDK 则对此进行了修改,使用一套代码来适配多个平台,给开发者带来完全一致的使用体验。

Reactive API
老版本 SDK 所有的网络请求都是通过 Callback 方式实现的,在实现多轮前后衔接的业务逻辑时会导致代码嵌套层级过多,影响阅读,同时在 Java 开发环境下这种异步的方式也不太友好。故而新版本 SDK 的存储接口完全基于 RxJava 来构建。函数式编程风格的 API,给业务开发带来更多便利。
例如,我们在发表一篇博文(Post)的时候,需要同步增加一些 Comment,在新的 SDK 中则可以这样来实现:

AVObject post = new AVObject("Post");
post.put("title", "LeanCloud 发布了新版 Java 统一 SDK");
post.put("content", "9 月初,LeanCloud 发布了新版 Java 统一 SDK,欢迎大家试用!");
post.saveInBackground().map(new Function<AVObject, AVObject>() {
  public AVObject apply(AVObject p) throws Exception {
    // 在 Post 保存成功之后,再新建一个 Comment 对象.
    AVObject comment = new AVObject("Comment");
    comment.put("content", "好想试一下");
    comment.put("post", p);
    return comment.saveInBackground().blockingFirst();
  };
}).subscribe(new Observer<AVObject>() {
  @Override
  public void onSubscribe(Disposable disposable) {
  }

  @Override
  public void onNext(AVObject comment) {
    System.out.print("post and comment objects have been saved successfully.");
  }

  @Override
  public void onError(Throwable throwable) {
    System.out.print("Saving post or comment objects failed. cause: " + throwable.getMessage());
  }

  @Override
  public void onComplete() {
  }
});

如何使用新版 SDK

新版 SDK 现在处于开放测试阶段,其最新版本为 5.0.0-SNAPSHOT,我们已经编译发布到了 LeanCloud 的 maven 仓库中。大家可以通过 Maven 和 Gradle 等包依赖管理工具来下载使用,具体可以参考这里的 wiki 说明

大家发现 Bug 或者有任何疑问或建议,请使用 GitHub Issue 来告知我们,我们会及时跟进解决,非常感谢大家的反馈。

LeanCloud 控制台增加二次认证,账号安全更有保障

在 LeanCloud,保障用户的数据安全是我们最为重视的职责之一。为了防范用户密码意外泄露或遇网络攻击破解而产生的安全隐患,我们为 LeanCloud 账户增加了行之有效的二次认证功能。

当用户启用了二次认证后,再次登录 LeanCloud 控制台时,除了填写邮箱与密码,系统还会要求输入一个二次认证验证码,这个验证码是由启用二次认证时所绑定的手机应用动态生成的 6 位数字。因此即使有一天你的密码被泄露,只要手机还在,别人依然无法登入你的账号。

除了登录账号,对于删除、转移应用、清空 Class 数据等危险操作,系统也会要求输入二次认证验证码以确认你的身份。

继续阅读

预告:图形验证码 Captcha 功能即将上线

眼科医生:自从我把视力表换成 Captcha 版,生意就一直不错。

LeanCloud 即将为使用短信服务的用户推出图形验证码(又称 Captcha)增值服务。服务上线后可用于验证短信接口的请求,避免由于短信轰炸造成的损失。

继续阅读

云引擎组管理功能正式上线

大家好,如之前 预告,云引擎的「组管理」功能已经正式上线了,入口位于 控制台 > 云引擎 > web 组(点击下箭头)> 组管理

使用这一功能,您可以建立多个独立的云引擎实例分组,在访问同一数据源的情况下,部署多套不同的服务器端业务代码,并对每个分组设置独立的二级域名,实现更丰富的业务需求:

  • 将用户界面和管理后台拆分为不同的项目,使用不同的域名。
  • 使用不同的服务器端语言来编写云函数和网站,例如您可以使用 Node.js 编写云函数,而用 PHP 来实现网站。
  • 单独部署主系统之外的边缘支持系统,方便独立维护。

简介

云引擎默认会有一个用于处理云函数、Hook 和定时任务的分组「web 组」,其他额外创建的分组将成为「拓展分组」。拓展分组无法使用云函数、Hook 和定时任务,只能通过绑定的二级域名或自定义域名来提供网站托管服务。在创建了多个分组后,您可以随时在云引擎界面中切换分组。

每个分组都有用于测试代码的独立的预备环境,以及独立的域名供外部访问。同时每个分组的环境变量、代码仓库等设置也是独立的,因此可以单独向一个组部署代码。您可以按照 实例管理文档 中的介绍,在分组中创建和管理实例。如果组中没有实例就无法响应请求;如果组中有多个实例,便可以提供负载均衡和高可用的能力。

创建和管理组

组管理界面提供了创建、删除和修改默认分组的功能。

选择一个分组并进入到它的设置界面中,就能修改相应的代码仓库、二级域名、环境变量等信息。一个分组中,开发者只能创建生产环境实例,当第一个生产环境实例被创建后,系统会自动赠送一个预备环境;当分组中最后一个生产环境实例被删除时,系统同时会删除那个预备环境。若想删除当前的分组,则需要先删除该分组下的所有实例。

如果您使用命令行工具来管理云引擎,请确保已经将命令行工具升级到了 0.7.2 或更高的版本(使用 $ lean version 来查看当前版本)。更多关于命令行工具的介绍,请参考 命令行工具 CLI 使用指南

价格

云引擎组管理是一个增值功能,开启组管理将额外收取 20% 的云引擎实例费用。但目前该功能免费试用,正式收费之前我们会另行通知。详细价格方案请参考 文档

福利来了!快用 LiveKit 打造自己的直播传奇

leankit

直播,这种最新潮的社交模式,现在火得是一塌糊涂。像秀场、教育、健身、游戏、电商等类型的应用,都可以结合直播开发出独具匠心的产品体验,迅速提高用户量级。基本的直播功能包括视频流传输、聊天、弹幕、打赏等元素,鉴于业界目前还没有完整统一的解决方案,有需求的开发者只能自己去苦读文档,重新发明轮子。我们认为这种现状必须改变!

现在向大家隆重介绍 LiveKit 直播 UI 套件。它是基于 LeanCloud 实时通信服务七牛直播服务,由我们精心打造而成的 UI 套件,既包含直播、文字聊天、弹幕、送礼物等界面,又提供灵活的用户账户接入体系。开发者通过调用这些现成的 UI 和接口,可以快速地为自己的项目植入直播与聊天功能。

继续阅读

使用 LeanCloud WebRTC 插件打造视频聊天应用

剪贴板_2016-08-23_11-07

随着网络环境的整体改善,越来越多的应用开始加入视频聊天功能——社交通讯、视频会议、在线教育、在线医疗、在线客服,涉及领域广阔。视频聊天听起来爽,做起来难,要耗掉多少个项目人天都不好说。所以为了降低接入视频聊天功能的成本,我们实验性地发布了一款与 LeanCloud 实时通讯 JavaScript SDK 搭配使用的 WebRTC 插件,为想在 Web 平台上实现一对一视频聊天的开发者们助一把力。

WebRTC Demo

首先来介绍使用了 WebRTC 插件开发的 WebRTC Demo。得益于开放的 WebRTC 标准,LeanVideoChat 不需要安装浏览器插件,也无需注册。

Demo 地址:https://leancloud.github.io/js-realtime-sdk/demo/webrtc/

Demo 的源码公开放在 https://github.com/leancloud/js-realtime-sdk/tree/master/demo/webrtc

继续阅读

在 Python 3 环境中使用 LeanCloud

Python-SDK

LeanCloud Python SDK 发布了新版本 1.6.0,增加了对 Python 3 的支持,并且向前兼容 Python 2 的代码。目前开发者可以在这两个环境中使用 LeanCloud 来构建应用。新版 Python SDK 的开发与测试主要在 Python 3.5 下进行,因此希望使用 Python 3 的开发者建议选择 Python 3.5。

另外云引擎 LeanEngine 也支持运行于 Python 3 的应用。开发者需要在项目的根目录下创建一个 runtime.txt,内容为 python-3.5 ,然后使用命令行工具或者在 LeanCloud 控制台进行项目部署,即可将代码运行在 Python 3.5 中。

不过在此之前,请依据以下升级和兼容性检查的提示来确认项目代码和所依赖的第三方模块已经完全兼容 Python 3。

继续阅读

LeanCloud 数据存储服务增加性能统计功能

为帮助用户更容易地掌握应用的存储负载量以及采取必要的性能优化措施,我们最近上线了存储 API 性能统计功能。现在您可以通过开发者后台的 存储 > API 统计 > API 性能 菜单查看到每日或指定期间内应用的最大并发数、每秒请求数 / QPS、所有请求的最大或平均响应时间等指标数据。

api-performance

这些指标的含义如下:

  • 最大并发数
    并发数是指服务器同时在处理的请求数。一天的最大并发数就是一天里同时在处理的请求数的最大值。
  • 最大 QPS
    QPS 是指 query per second,也就是每秒请求数。这是一天里每秒请求数的最大值。
  • 最大响应时间
    一个请求的响应时间是服务器从收到这个请求到完成处理并发回结果的时间。一天的最大响应时间就是这一天里所有请求当中最耗时的一个请求所对应的时间。
  • 平均响应时间
    一天里所有请求的响应时间的平均值。
  • 80%、90%、95% 响应时间上限
    反映一天内响应时间的分布。将一天内的请求按照响应时间从小到大排序,截取前 x% 的请求,其最大响应时间就是 x% 响应时间上限。如果 95% 响应时间上限是 20ms,意味着当天有 95% 的请求响应时间是低于 20 毫秒的。对大多数应用而言,在一天当中难免出现少数比较慢的请求,这些数字排除了少数异常情况,对衡量真实的用户体验往往比最大响应时间更有参考价值。

继续阅读

全新设计的 JavaScript 实时通信 SDK 3.0 现已发布!

今天我们高兴地宣布 LeanCloud 下一代 JavaScript 实时通讯 SDK 的 3.0 beta 版本发布了!我们不仅为这一新版本(以下简称 v3)带来了性能提升,还加入了很多令人激动的新功能和改进,包括单点登录、未读消息通知、按条件查询对话、自动更新的对话和消息状态、自定义消息类型、更好的断线重连机制,以及重新设计的 API 等等。

重新设计的 API

在 v3 中我们改进的重点是 SDK 的易用性,为此我们设计了全新的 API。除了一些细小的命名与特性的区别,JavaScript SDK v3 的 API 与其他平台 SDK 的 API 已经统一。随着平台差异性的减少,开发者在为各平台应用设计与实现阶段所投入的工作量也会降低。

相较于 v2,v3 API 对易用性的改进体现在以下几个方面:

  • 自动更新的对话和消息状态
  • Promise 与异常处理
  • 新的事件模型
  • 可扩展的消息类型系统

继续阅读