分类目录归档:产品新闻

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 的开发之中,请大家尽早切换使用。

LeanCloud 推出 10x 程序员专用笔记本

在过去十多年里,苹果笔记本逐步从非主流的产品成为了程序员的标配,但是苹果从 2016 年开始使用的新键盘实在让大家失望,而其他厂商的笔记本中又难以找到在各方面能与 MacBook Pro* 抗衡的产品。在强大的需求驱动下,我们决定自己来解决这个问题。

我们最初把目标定为打造一款最适合程序员用的笔记本,但是经过一些早期的调研,发现这个群体太大,需求过于多样,还是把目标限定为资深程序员(也就是在硅谷喜欢说的 10x 程序员)这个更加垂直的群体比较好。这个产品需要满足以下条件:

  • 手感要好
  • 长时间使用不伤眼
  • 轻薄便于携带
  • 突破电池技术瓶颈实现超长持续使用时间
  • 价格低廉

在一个产品上同时达到这些条件的追求使得我们必须从 first principles 出发从全新的角度审视这个问题。

Jeff Atwood 说「最好的代码是没有的代码」,因为不存在的代码就不需要维护。在和多位成功的资深程序员的访谈中我们发现,其实他们大部分时候只要画画流程图,具体细节让初级程序员和实习生去实现就好了,所以键盘对他们来说其实是个伪需求。最好的键盘就是没有键盘。

为了满足高效地画流程图的需求,我们决定支持用笔的操作,并兼容几乎所有采用有机溶剂的第三方配件,在我们的测试中大部分笔在操作 10x 程序员笔记本时灵敏度比 Apple Pencil* 高一个数量级**。在显示技术方面,我们使用了比 Retina Display 分辨率高两倍、使用自然光反射技术的界面,有效视角接近 180 度(超过所有 LCD、LED 显示器),并且长时间使用眼睛也不会疲劳。

使用传统技术的笔记本厂商不得不在电池容量/使用时长和便携性之间做痛苦的权衡,然而最好的电池是没有电池,使用时长最长的笔记本是不耗电的笔记本。得益于可以反射自然光的显示材料,我们的笔记本真正实现了零功耗,所以做到了无需充电永久使用。

在小批量内测的过程中我们还发现了一个重要的隐藏需求。资深程序员即使实际很少使用 vim、sed、awk 等工具,也要对相关知识非常熟悉,这样与用 Visual Studio Code*** 的初级程序员相比才能树立优越感和区分度。所以我们的笔记本里包含了 10 种 10x 程序员常用工具的快速参考。

10x 程序员笔记本重新定义了 10x 程序员。

点击购买你的第一个 10x 程序员笔记本

* Apple、MacBook Pro 和 Apple Pencil 是 Apple Inc. 在美国和其他国家或地区注册的商标
** 在实验室条件下得到的结,实际使用中可能有偏差
*** Visual Studio 是 Microsoft 在美国和其他国家或地区注册的商标

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 官网改版,产品介绍与使用方案全面更新

8 月 21 日,新版 LeanCloud 官网正式上线。在此次改版中我们翻新了所有产品与服务的介绍,调整了开发版、商用版和企业版的结构与描述,希望以此能够帮助现有及潜在用户更清楚地了解 LeanCloud 各类产品的实用性及以上三种使用方案之间的差异性。另外,各项服务的价格并没有变化,所以不会导致使用成本增加。

区分核心服务与扩展服务

文件存储、短信、云引擎、云缓存这些服务都统一按照实际使用量收费,并不会因使用方案不同而产生价格或功能上的差异,因此我们将它们从核心服务中抽取出来放入扩展服务。这样的区分也让整个使用方案体系看起来更加简化易懂。

需要说明的是,文件存储和短信服务是我们与第三方服务商合作的产品,将其纳入 LeanCloud 产品体系的初衷是为了尽可能地满足开发者的实际需要。由于此类服务商无法实时提供服务消费清单,与我们结算费用存在一至三天不等的滞后期,所以会出现这样一种情况,即一个已被暂停、没有了网络流量的 LeanCloud 应用仍有可能在后续几日被补扣这些延迟的费用。这是开发者们常有的疑问。

移动统计纳入核心服务

移动统计是我们自主开发的产品。它会针对不同的使用方案提供不同的资源和能力配备。例如,对于开发版应用来说,统计服务的事件上报接口的调用次数会与存储服务的 API 调用次数累加在一起,受到每天调用上限三万次的限制;对于商用版应用来说,事件上报次数既没有限制,也不会与存储服务的 API 调用次数累加在一起,这样也就不会增加商用版存储服务的成本。

统计结果在云端的有效保存时间为六个月。如果不想使用移动统计,请登录应用控制台,进入 分析 > 统计设置,关闭 启用 SDK 统计功能

如果您对此有任何疑问或反馈,请通过 support@leancloud.rocks 联系我们。

云引擎开始支持 .NET Core

.NET Core 在经历了几年的发展之后,非常理智地挣脱了 Windows 原生平台的束缚,充分拥抱开源,而我们的云引擎产品也补充了对 .NET Core 运行时的支持。用户现在可以轻松地部署和托管一个 .NET Core 的项目,例如一个 ASP.NET Core 的网站。

下载示例项目:

git clone https://github.com/leancloud/aspnetcore-getting-started.git

然后进入源码目录:

cd aspnetcore-getting-started/

执行如下命令绑定一个应用:

lean switch

注:此处可能会要求登录,按照命令行工具提示成功绑定一个应用即可。

最后部署到云端:

lean deploy

打开设定的二级域名就可以预览一个 ASP.NET Core 的示例网站了。

更多文档和开发指南点击:.NET 网站托管开发指南

LiveQuery 从 8 月 1 日起开始收费

LeanCloud 多端数据实时同步服务 LiveQuery 自 2017 年 6 月推出以来因其易用性而备受好评,它已被广泛应用在多端内容实时更新、单设备登录、在线交互等众多业务场景之中。我们非常感谢大家对这款产品的认可,这与广大开发者不断为我们提供反馈和改进建议密不可分。鉴于 LiveQuery 不断上涨的使用量以及商业用户对于云端服务稳定性的要求,我们决定从 2018 年 8 月 1 日起,开始对 LiveQuery 提供免费和付费两种方案来满足大家不同的使用需求。

免费方案留有充足的使用量,便于用户进行功能接入调研和试用。付费方案会利用云端专属及优化资源,让服务在大流量状态下仍然有稳定良好的查询性能。

LiveQuery 会从「查询订阅数」和「下发消息数」两方面来统计使用量及费用。

  • 查询订阅数:每天不同客户端不同查询的总次数,同一个客户端一天之内多次执行相同的查询也只计数一次。
  • 下发消息数:服务端在数据变化之后,每天通过查询匹配下发给客户端的所有消息的总数。执行了匹配运算但是没有消息下发的不计费。

计价方案如下:

华北/华东节点

开发版(免费)商用版(按使用量收费)
查询订阅数不超过 100 次 / 天¥4.0 元 / 千次订阅 / 天
下发消息数不超过 5000 条 / 天¥2.0 元 / 万条消息 / 天

北美节点

开发版(免费)商用版(按使用量收费)
查询订阅数不超过 100 次 / 天$1.0 USD / 千次订阅 / 天
下发消息数不超过 5000 条 / 天$0.4 USD / 万条消息 / 天

我们已在 LeanCloud 应用控制台开放出这两项指标的每日统计数据,查看路径为 应用 > 存储 > 统计 > LiveQuery。大家可以据此来评估应用是否已超出免费方案的限量,并预估将来可能增加的成本支出。

如果对此有任何疑问或反馈,请通过 support@leancloud.rocks 联系我们。

LeanCloud Play 对战游戏服务正式上线

LeanCloud Play 现在已经正式发布,感谢申请内测的所有用户的支持。所有老应用及新创建的应用都可以直接使用 Play 服务,您只需要在游戏引擎中填入对应的 App ID 和 App Key 即可接入 Play。如果您在接入时遇到任何问题,请到社区发起新的主题,并附上如何重现场景的描述及关键代码,我们的开发工程师会给予回复。

Play 简介

Play 是专门针对多人在线对战游戏推出的后端服务。开发者不需要自己搭建后端系统,利用 Play 云服务就可以轻松实现游戏内玩家匹配、在线对战消息同步等功能。Play 完美适配 Unity 引擎,支持多个平台。

Play 使用起来非常简单:

连接服务器

Play.UserID = "Mario";
Play.Connect("1.0"); // 声明游戏版本

随机匹配房间

Play.JoinRandomRoom();

游戏内发送消息

// 定义名为 rpcResult 的 RPC 方法
[PlayRPC]
public void rpcResult(int winnerId)
{
  Debug.Log("winnerId: " + winnerId);
  ui.showWin();
}
// 向所有人发送游戏消息,收到消息的玩家的 rpcResult 方法会自动被触发
Play.RPC("rpcResult", PlayRPCTargets.All, winnerId);

更详细的介绍请参考《Play 服务总览》。

Play 的未来规划

  • Play 已实现在客户端运算游戏逻辑,服务端运算部分正在研发中,预计不久就可以开放公测。
  • Play 已经支持使用 Unity (C#) 来开发,未来会支持 Cocos、Erget (JavaScript) 及更多的游戏引擎。

如果您有兴趣了解 Play 的新功能或支持的新语言,请订阅我们的博客来接收最新的产品信息。

价格

Play 目前处于免费试用阶段,开发版及商用版应用均不收费。每一应用最多可使用 100 CCU 的额度,如果您需要更大的额度,请联系 support@leancloud.rocks。

LeanCloud Play 内测邀请—不搭建后端,快速上线多人对战游戏

如果您准备打造一款多人对战游戏,正在寻找合适的后端平台与开发资源,那么我们诚邀您加入 LeanCloud 新产品「Play」内测。

LeanCloud Play 提供了稳定和方便的后端接口使您快速完成多人游戏的研发和上线。与其为复杂的后端架构忧心,为组建和管理后端及运维团队烦恼,为项目范畴太大而憔悴,不如使用 LeanCloud Play 来节省至少 60% 时间和人力成本,让产品准时上线,抢占市场。

产品功能

  • 玩家匹配:随机或按指定条件将玩家匹配到一起玩游戏。就像《第五人格》、《吃鸡》等对战类手游,玩家只需点击「自由匹配」就可以随机匹配进入某个房间,或者玩家也可以自己新开房间。
  • 多人在线对战:客户端与服务端使用 WebSocket 通道进行实时双向通信,确保游戏内所有消息能够快速同步。
  • 游戏逻辑运算:由主客户端控制游戏逻辑。当主客户端掉线时,LeanCloud Play 会自动将网络状态最好的客户端切换为主客户端,确保游戏顺畅进行;您也可以选择在服务端编写游戏逻辑(服务端游戏逻辑支持尚在开发中)。
  • 多平台支持:完美适配 Unity 引擎,支持多个平台,同时也欢迎您提出其他语言的需求。

全球支持,灵活稳定

LeanCloud Play 为您提供国内外节点,满足您向全球推广和发行游戏的需求。Play 服务端沿用了 LeanCloud 现有的可横向扩展的架构,支持动态扩容,从容应对海量用户;同时又在这些久经考验的底层架构上进行了深度优化与改进,可以稳定承接每秒亿级的消息下发量。

如何使用

使用 LeanCloud Play 的步骤非常简单。

连接服务器

Play.UserID = "Mario";
Play.Connect("1.0"); // 声明游戏版本

随机匹配房间

Play.JoinRandomRoom();

游戏内发送消息

// 定义名为 rpcResult 的 RPC 方法
[PlayRPC]
public void rpcResult(int winnerId)
{
  Debug.Log("winnerId: " + winnerId);
  ui.showWin();
}
// 向所有人发送游戏消息,收到消息的玩家的 rpcResult 方法会自动被触发
Play.RPC("rpcResult", PlayRPCTargets.All, winnerId);

更详细的文档及教程请阅读《Play 服务总览》、《Play 快速入门》和《Play · Unity (C#) 开发指南》。

申请内测

我们将邀请 10 名用户参与内测,通过微信群与我们的 Play 研发工程师保持沟通。您的反馈将会影响 LeanCloud Play 未来的发展方向,我们期待着与您共同打造优秀的游戏产品!

⚔️ 点击此处申请内测 ⚔️

4 月 1 日起数据存储服务将增加对象存储空间的收费项目

2018 年 4 月 1 日零时起,LeanCloud 数据存储服务将在现在收费基础上加收对象存储(即以 AVObject 形式存储的数据)所使用的空间的费用。

之所以增加该收费项目,是因为我们发现以往仅按应用请求次数收费的模式,容易让开发者们忽略数据实际的存储空间大小,继而完全忽视了数据清理等维护性工作。这样日积月累,很多无用的数据会占用大量的云端资源,极大地影响了存储系统的性能。同时随着 LeanCloud 开发者和应用数量的不断增长,这样形成的资源浪费也愈发严重。于是我们借鉴对文件存储空间收费的经验,决定通过这一经济化手段,引导广大开发者来更合理地使用云端资源和 LeanCloud 服务。

继续阅读

LeanCloud 开源工单系统 LeanTicket 焕然一新

相信很多开发者已经注意到,LeanCloud 的工单系统 LeanTicket 改版了。新版的 LeanTicket 不仅更新了界面,采用了响应式的页面布局来适配移动端,并且添加了诸多新功能,如增加了更多的工单状态来更清楚地罗列工单时间线的变化和下一步行动、完善了统计报告、优化了系统响应速度等等。

继续阅读