月度归档:2014年06月

使用 AVOS Cloud JavaScript SDK 和 AngularJS 创建 一个 Todo Demo

为什么选择这两个库做 Todo

AVOS Cloud JavaScript SDK 负责把数据存储在服务器,提供了 数据查询,保存,更新等常用操作的方法。AngularJS 对于增删改查类型的应用场景非常合适。这块主要用到了 AngularJS 的 模板和绑定方面的特性。

Step By Step 入门

这里主要说下 AVOS cloud Javascript SDK 与 AngularJS 结合使用的部分

初始化 AVOS Cloud JavaScript SDK

AV.initialize("your app id", "your app key");

既然是与 AngularJS,这里可以有更优雅的写法,对于 angular 来说初始化可以放在 模块初始化的配置里面。

var module = angular.module("todoMod",[]);
    module.run(function() {
        AV.initialize("your app id", "your app key");
    });

保存一个对象

        var Todo = AV.Object.extend("Todo");
        var todo = new Todo();
        todo.set("text",$scope.newTodo.text);
        todo.set("done",$scope.newTodo.done)
        todo.save(null, {
            success: function(result){
                $scope.$apply(function(){//使 angular 知道数据发生了变化
                    $scope.todos.push(todo.toJSON());
                });
            }
        });

我们知道一个 AngularJs 的 model 是一个 plain JavaScript Object,对于 AV Object, 需要用 set 来设置属性。注意 AV Object 并不是一个 key,value 的值组合,比如有 todo.save() 方法,所以不能 todo[prop] 这样获取属性。需要走 setter,getter 方式。还有其他更优雅的结合方式 下面再说。

这里还有一点需要注意,就是 $scope.$apply 这一行,因为数据的保存请求是通过 AV Object 进行的,所以 angular 并不知道发送了什么,需要告知 angular todo 数据发生了变化。

todo.toJSON()todo 是一个 AVObject 类型实例,需要转换成 angular 需要的数据格式。

查询 Todo 列表

        var Todo = AV.Object.extend("Todo");
        var query = new AV.Query(Todo);
        query.find({
            success:function (results){
                $scope.$apply(function(){
                    $scope.todos = JSON.parse(JSON.stringify(results));
                })
            }
        })

这里需要注意 JSON.parse(JSON.stringify(results)), results 是一个普通的 js Array,但里面的元素都是 AVObject 类型的实例,需要转化成 angular 需要的数据格式。

一个简单的模型就建立起来了

查看源码 ,下载下来直接打开 index.html 就可以看到效果了。

通过 AVOS Cloud 数据管理平台查看,管理数据。需要创建一个自己的 应用 ,并在初始化的时候 替换掉 AV.initialize 里的 AppId AppKey

关于 AV Object 数据与 Angular 的转化。

除了通过 JSON 方式,还可以用

Object.defineProperty(Todo.prototype, "title", {
      get: function() {
        return this.get("text");
      },
      set: function(aValue) {
        this.set("text", aValue);
      }
    });

这样可以在 html 里直接通过 {{todo.text}} 访问。

关于通知 Angular 发生变化

除了通过 $scope.$apply,还可以借助 $timeout 或者 $q 来让 Angular 感知到变化。

var query = new AV.Query(Todo);
$q.when(query.find()).then(function(todos) {
  $scope.todos = JSON.parse(JSON.stringify(results));
}, function(error) {
  // deal with error
});

结合 AVOS Cloud JS SDK 和 AngularJS 可以实现 MEAN 的全栈开发。其中 M(Mongo) E(Express) N(node) 由 AVOS Cloud 完成。

AVOS Cloud 实时通信服务发布:拉近用户间的距离

1070333248_kDaqub

AVOS Cloud 的实时通信服务发布了。您可以 从网站上下载我们的 2.5.9 及以上 SDK 版本(Android 和 iOS)使用这个功能。

什么是实时通信服务? 不同于传统的基于 HTTP 「请求」-「响应」的机制,实时通信的客户端会保持一个到服务器的持久连接,开发者在这条信道上可以实现与服务器的全双工通信。这意味着,发送数据时「连接」的延时可以完全忽略,接收数据时可以使用真正的推模型,不再需要为了获取一次数据而发送额外的请求。

实时通信服务的来历。 今年第一季度,我们改造了 AVOS Cloud 的推送,实际上从那时起我们已经在使用自己研发的持久连接技术实现推送了。推送是一种单向的通信,手机客户端只接收数据。这次发布的实时通信功能,就是在推送的持久连接上,增加了数据的上行通道。如果你使用的是 Android 平台,我们的推送和实时通信可以共用同一个持久连接,减少额外的开销。

实时通信能用来做什么? 说到实时,最先想到的就是聊天工具。利用全双工的通信通道,你可以轻松实现设备间的低延迟对话。我们的第一个用户 百姓网 ,就是利用这套基础服务实现了他们的实时私信功能。此外,你也可以利用两台设备间的实时连接,实现远程的对战游戏,比如像 QuizUp 这样的实时猜迷竞赛。实时的体验可以使用户间的互动更加流畅,无形中拉近了用户间的距离。

它的 API 怎样? 我们这次发布的是一套完全底层的 API,它的目标是帮助用户解决几个根本问题:

  • 点对点收发数据
  • 上下线通知
  • 权限认证

在设计 API 时,我们考虑到自己的 SDK 做的越多,对用户应用的侵入越大,用户能做的就越少。High-level 的 API 用起来固然快速,但往往限制了你创造的空间和思路。在移动互联网瞬息万变的时代,一套轻装上阵,简单易于理解的 API 相信更贴近你的应用,也免去了你费力 hack,转换内部概念的功夫。从平台的角度,我们也有信心把最底层的 API 暴露出来,接受不同使用场景的考验。

另外,和推送、统计服务一样,AVOS Cloud 的实时通信服务并不强制要求用户使用我们的核心存储功能。任何的应用都可以接入实时通信服务,权限认证由开发者的接口或云代码上的服务端程序完成,通过签名的形式与实时通信服务确认。

实时通信服务如何收费? 当前的价格请查看 价格页面

开始使用:

PS: 7 月 18 日我们将在 InfoQ Archsummit 2014 大会 上分享 我们构建实时云服务的经验和心得 ,欢迎关注。

编辑:修正 SDK 版本号。

 

AVOS Cloud 用户调查结果

两周以前我们对现有用户进行了一次匿名 Net Promoter Survey,没有抽奖之类的激励,只希望听到用户的真实声音。里面只有两个问题:

  1. 你是否会向朋友或公司推荐使用 AVOS Cloud?
    • 五星:会强烈推荐
    • 四星:可能会推荐
    • 三星:不会主动推荐
    • 二星:可能会劝阻
    • 一星:一定会劝阻
  2. 以上选择的最重要的原因是什么?

总体的统计结果如下(有三个用户没有回答第二个问题,没有被作为有效回复计入):

用户反馈统计

用户反馈统计

从结果不难看出用户非常喜欢我们的产品。有 38.33% 的用户愿意无保留地推荐我们,有 52.5% 的用户表示会在认为合适的场景推荐我们。同时没有任何用户回答会劝阻别人使用 AVOS Cloud。这些数字对团队是很大的鼓励。当然我们也清楚地认识到调查结果可能是存在偏见的,因为喜欢这个产品的人可能会更积极地回复调查。在回复的用户中也还有 9.17% 的用户对推荐我们的服务有所保留。

从用户们对第二问的回答里,很容易看出 AVOS Cloud 的价值得到了验证,大部分用户都提到了这样一个功能强大的云服务大大简化和加速了移动应用的开发,带来了很大的便利。我们也总结了用户提出的建议,在后面的一段时间里将会从以下几个方面应对:

  • 更好地支持面向海外的应用 :我们计划在近期部署海外节点以满足开拓海外市场的中国开发者的需求。
  • 改进文档和上手体验 : 在国内面向开发者的服务中,我们一直以文档完整详尽著称,但在这方面仍然有不少提高的空间。除了开发文档外,我们会不断增加教程文章,也会增加更多的 demo 以让用户有更多可借鉴的代码。同时会为新用户提供更友好的引导。
  • 提高新版 SDK 的稳定性 :我们将通过适当调整发布周期、提高自动化测试的覆盖率,争取每次发布新版 SDK 时做到 bug-free,让用户升级时没有任何担心。

感谢回复问卷的所有用户,相信你们会很快在 AVOS Cloud 看到所期望的改进。

最后也推荐一下这次调查使用的「麦客」。表单的体验和结果呈现都做得不错,数据可以导出成 Excel 存档。也是一家创业公司,支持一下。

2014 年 6 月份第三周更新总结

本周我们最重要的进展是发布了实时通信组件,通过实时通信组件,您可以实现在线实时聊天(类似微信)、游戏通讯服务等功能。目前仅发布 iOS SDK,Android 将在这周更新。点击查看 《实时通信组件开发指南》

本周我们还对网站和 API 服务做了一些改进和修正。Unity SDK 也补充了 文件上传统计 等相关文档,并且发布了一个基于我们 SDK 实现的 flappy bird 游戏 demo。参考 这篇博客 ,浏览整个开发过程。

我们还将我们提供和从用户那里征集到的 demo 都汇总到 avoscloud-demo 这个项目,并添加了较为详细的运行说明,欢迎大家尝试运行。

完整的更新汇总如下。

网站和服务

  • 正式对外发布 实时通信组件
  • 控制台为每个应用添加了单独的组件菜单,我们将 应用内搜索设置在线参数设置 移动到组件菜单。
  • 在组件菜单中,新增网页版用户反馈。在这里您可以查看和回复应用内的用户反馈。《用户反馈组件开发指南》
  • 网站增加上海黑客马拉松报名页面, 点击马上报名吧 ,丰厚奖品等你来拿。
  • API 服务修复新版 iOS SDK 复合查询 Bug,感谢用户反馈。
  • 事件流 API 做了如下改进:当关注一个新用户的时候,会自动拷贝该用户的最新一条状态到收件箱; 取消关注用户,自动从收件箱中忽略该用户状态 ; 对收件箱状态做去重。
  • 《应用内搜索开发文档》 增加排序和分页说明。修正一些开发文档拼写错误,感谢用户反馈。
  • 其他一些 UI 改进,例如导入数据自动填写 class 名称等。

iOS SDK 2.5.9 版本

  • 正式对外发布 实时通信组件
  • 升级到本版本 sdk 的老用户,需要添加 libicucore.dylib 库依赖。
  • 统计默认打开崩溃错误统计

Android SDK 2.5.8.2 版本

  • 增加 AVObject.getAVUser(String key, Class<T> clazz) 获取 AVUser 子类化对象方法
  • 统计默认打开崩溃错误统计。
  • 应用内搜索增加排序 API。

Unity3D SDK 1.0.2 版本

  • 实现文件上传和下载 API
  • 修改重复统计开机事件的 bug。
  • 修复用户登录时可能会引起的授权判断错误。
  • 更新 开发文档统计文档

中国移动北京和江苏地区部分用户受到 DNS 劫持和污染

最近我们发现中国移动在北京和江苏的部分 DNS 服务器对我们的域名返回错误的 IP 地址,并且中国移动在北京存在大范围的 DNS 污染。所以这两个地区使用中国移动网络的部分用户无法使用我们的服务。我们尚不清楚其他网站受影响的情况。目前我们正在与运营商协调尽快解决这个问题。

如果您是中国移动的用户,也请帮助我们投诉给运营商,一起来促请运营商尽快解决,非常感谢您的支持和理解。

为 Unity 游戏添加 AVOS Cloud 后端服务

伴随着 Unity 蒸蒸日上的前进势头,以及向来冷艳傲娇格调高的 暴雪 都采用 Unity3D 来制作魔兽嫡系卡牌游戏 炉石传说 ,如此看,Unity 在 3D 市场上是得到了业界「九袋长老」的认可的,既然 Unity 表现的如此高大上,那么同样与时俱进的 AVOS Cloud 怎会不与 Unity 共舞一曲《天仙配》呢?

2014 年 5 月,AVOS Cloud 已经正式发布了 AVOS Cloud Unity SDK, 相关下载以及文档请用力猛戳:AVOS Cloud Unity 指南
当然本文的主题依然是帮助

正在寻找后端解决方案,或者要为现有 Unity 的游戏添加后端服务模块的开发者们

解决你们一切的 后端之忧

继续阅读

使用 Swift 和 LeanCloud 构建 iOS 应用

苹果在今年(2014)的 WWDC 大会上发布了一门新的开发语言 Swift。我们注意到很多开发者对 Swift 感兴趣,于是我们第一时间尝试了怎么用 LeanCloud SDK 和 Swift 构建 iOS 应用,并把方法告诉大家,方便使用 LeanCloud 服务的开发者能更快适应新的开发语言。

如果你还不知道 Swift 或者知之甚少,可以先看看苹果官方的介绍
The Swift Programming Language 或者 The Swift Programming Language (iBooks Store)

Swift 对于 iOS 的开发者来说,一个最重要的特点就是它完全兼容已有的 Objective-C 开发库,不论是系统已有的还是第三方提供的。下面介绍怎么在 Swift 工程中使用 LeanCloud SDK。

继续阅读