月度归档:2013年12月

2013 年 12 月第三周 AVOS Cloud 更新

又到一周更新的时候,在圣诞节将至的时候,我们提前为您送上圣诞祝福。

本周我们做了不少优化和改进。首先,我们的网站做了部分 UI 优化,对 价格页面 也做了调整,信息更清晰一些。

其次,统计新增渠道链接设置,可生成权限有限的渠道链接,提供给第三方查看应用的统计信息,您可以在菜单新增、删除这些链接。截图:

qudao.png

本周我们发布了 SDK v2.1.2 版本(android 为了跟 iOS 保持一致,跳过了 v2.1.1 版本)。发布了全新的 demo 项目,可以直接运行 demo,查看结果并查看源码等。其次,修复了部分统计模块的 Bug,提高精确度。详情请看后面的更新日志。

SDK 下载请点击 这里

网站和服务端

  • 控制台 UI 优化。
  • 价格页优化。
  • 统计可生成渠道链接,提供给第三方查看。
  • 错误统计 statcktrace 优化
  • 数据导出服务,导出中文数据不再转成 unicode。
  • 修复导入 class 数据,无法导入中文标点符号的 Bug,感谢用户反馈。
  • 修复复合查询$or 无法和复杂查询(如 relation)共同作用的 Bug。
  • 修复更新数据的时候,新增 GeoPoint 类型没有自动创建 2D 索引的 Bug。

云代码

  • 发布 avoscloud-code 命令行工具 0.3.3 版本,升级通过 sudo npm install -g avoscloud-code 命令。
  • 云代码新增 avos-express-cookie-session,支持网站用户登录和登出,详情参考 这篇博客
  • 云代码新增 avos-express-https-redirect,为云代码托管网站添加 HTTPS 支持,详情参考 这篇博客
  • 更新 云代码开发指南 ,描述上述模块的使用。

Android v2.1.2 版本

  • 解决统计模块中,session 时长异常问题。
  • 汇报统计中出现的 crash 事件。
  • 解决 SDK 内部出现的空指针异常。
  • 发布全新的 demo 工程,请看 这里

iOS v2.1.2 版本

  • 优化统计逻辑
  • 完善 CrashReport 数据, 以后可以在统计后台简单的定位错误原因
  • SNS 模块 SSO 没成功的情况, 尊重 QQ AppKey 设置
  • 我们制作了一个全新的 Demo 帮助使用 AVOSCloud 的开发者, 尽快的熟悉和使用 SDK 而建立的, 包含了各种基础和高级用法. 以后会持续更新。更新详细说明在 这里

为云代码托管网站启用 HTTPS

为了安全性,我们可能会为网站加上 HTTPS 加密传输 。我们的云代码支持网站托管,同样会有这样的需求。

因此我们在云代码中提供了一个新的 middleware 来强制让你的 xxx.avosapps.com 的网站通过 https 访问,你只要这样:

var avosExpressHttpsRedirect = require('avos-express-https-redirect');
app.use(avosExpressHttpsRedirect());

部署并发布到生产环境之后,访问您的云代码网站二级域名都会强制通过 HTTPS 访问。测试环境的域名仍然不会启用 HTTPS。

如果你在使用 avoscloud 命令行工具测试的时候出现找不到 avos-express-https-redirect 的错误,请升级该工具:sudo npm install -g avoscloud-code0.3.3 版本 即可。

在云代码中处理用户登录

使用云代码的 web hosting 功能,你可以在我们的云代码里托管一个网站。网站很经常需要处理的一个事情是用户登录和登出。

今天我们来介绍下怎么在云代码里的 web 主机里,使用 express.js 框架处理用户登录和登出。

首先,您需要安装最新版本的 avoscloud-code 命令行工具(必须升级到最新的 0.3.3-beta 版本):

sudo npm install -g avoscloud-code

关于命令行更多详细内容请参考这篇 博客

接下来,假设你创建了一个支持 web 主机功能的云代码项目,在 app.js 里添加下列代码:

var express = require('express');
var app = express();
var avosExpressCookieSession = require('avos-express-cookie-session');

// App 全局配置
app.set('views', 'cloud/views');   //设置模板目录
app.set('view engine', 'ejs');    // 设置 template 引擎
app.use(express.bodyParser());    // 读取请求 body 的中间件

//启用 cookie
app.use(express.cookieParser('Your Cookie Secure'));  
//使用 avos-express-cookie-session 记录登录信息到 cookie。
app.use(avosExpressCookieSession({ cookie: { maxAge: 3600000 }})); 

使用 express.cookieParser 中间件启用 cookie,注意传入一个 secret 用于 cookie 加密(必须)。然后使用 require('avos-express-cookie-session') 导入的 avosExpressCookieSession 创建一个 session 存储,它会自动将 AV.User 的登录信息记录到 cookie 里,用户每次访问会自动检查用户是否已经登录,如果已经登录,可以通过 AV.User.current() 获取当前登录用户。

avos-express-cookie-session' 支持的选项包括:

  • cookie 可选参数,设置 cookie 属性,例如 maxAge,secure 等。我们会强制将 httpOnly 和 signed 设置为 true。
  • fetchUser 是否自动 fetch 当前登录的 AV.User 对象。默认为 false。如果设置为 true,每个 HTTP 请求都将发起一次 AVOS Cloud API 调用来 fetch 用户对象。如果设置为 false,默认只可以访问 AV.User.current() 当前用户的 id 属性,您可以在必要的时候 fetch 整个用户。通常保持默认的 false 就可以。
  • key session 在 cookie 中存储的 key 名称,默认为 avos.sess

登录很简单:

app.get('/login', function(req, res) {
    // 渲染登录页面
    res.render('login.ejs');
});
// 点击登录页面的提交将出发下列函数
app.post('/login';, function(req, res) {
    AV.User.logIn(req.body.username, req.body.password).then(function() {
        //登录成功,avosExpressCookieSession 会自动将登录用户信息存储到 cookie
        //跳转到 profile 页面。
        console.log('signed in successfully: %j', AV.User.current());
        res.redirect('/profile');
    },function(error) {
        //登录失败,跳转到登录页面
        res.redirect('/login');
    });
});

//查看用户 profile 信息
app.get('/profile', function(req, res) {
    // 判断用户是否已经登录
    if (AV.User.current()) {
        // 如果已经登录,发送当前登录用户信息。
        res.send(AV.User.current());
    } else {
        // 没有登录,跳转到登录页面。
        res.redirect('/login');
    }
});

//调用此 url 来登出帐号
app.get('/logout', function(req, res) {
    //avosExpressCookieSession 将自动清除登录 cookie 信息
    AV.User.logOut();
    res.redirect('/profile');
});

登录页面大概是这样 login.ejs:

  
    
    
      
%MINIFYHTMLb2404a8ffe87314785f5c454623ae0741%

P.S. 本次除了命令行工具做了升级之外,我们的 avoscloud-sdk 也升级到了 0.2.8,解决在 node.js 环境下用户登录信息会保存在本地文件的 Bug。

注意 :express 框架的 express.session.MemoryStore 在我们云代码中是无法正常工作的,因为我们的云代码是多主机,多进程运行,因此内存型 session 是无法共享的,建议用 cookieSession 中间件。

如何获得 AVOS Cloud 技术支持?

我们提供多种渠道来让用户获得帮助,在使用 AVOS Cloud 的过程中遇到的任何问题,都可以联系我们,获得帮助。

首先,我们提供了客服邮箱:support@avoscloud.com,您可以将问题发送到这个邮箱,我们将及时回复。

其次,我们提供了技术支持系统(这也是我们最推荐的方式),在登录进入 控制台 之后,可以在最上面的资源下拉菜单里找到技术支持的链接,请看截图:

20131213_support.png

点击 技术支持 菜单就可以进入我们的技术支持系统,您可以创建一个问题 Ticket 和查看您提交的 ticket 列表:

20131213_ticket.png

点击 创建 Ticket 开始创建问题,您可以选择问题的类型,描述下问题的详情,具体是哪个 App 等信息:

20131213_create_ticket.png

在创建 Ticket 后,我们会及时回复您。回复的内容也会同时发到您的注册邮箱,您可以从邮件里直接点击链接进入 Ticket 回复。请留意我们的邮件通知。

第三,我们还有一个用户 QQ 群,群号是 331805865,欢迎您申请加入。

第四,我们还提供了 技术支持论坛 ,您可以提交问题到论坛讨论并获得帮助。

最后,您还可以关注我们的新浪微博账号 @AVOSCloud,有问题可以直接咨询我们或者私信联系我们。

希望这篇博客能帮助到您,我们会继续努力,为用户提供及时的技术支持和帮助。

2013 年 12 月第二周 AVOS Cloud 更新

综述

今天我们发布了全新的 网站首页 ,更华丽的有没有?对网站的信息布局也做了调整,更合理和清晰。

我们还调整了 报价 页面,再次强调 推送和统计服务是完全免费的 。数据 API 的服务的 500 万免费额度对大多数个人应用也是完全足够的。

统计上线了错误报告功能,只要您在客户端开启错误报告,就可以在应用统计里看到错误报表和异常堆栈等信息。

iOS SDK 发布了 2.1.1 版本,为 SNS 组件添加了文字和图片的分享功能,并且 SNS 组件可以自动刷新 access token 了。Android SDK 本周没有更新。

API 方面,我们为 iOS 推送添加了测试证书和生产证书的区别,您可以在应用设置的推送配置里上传不同的证书,并且在推送界面指定 iOS 推送使用的证书,方便测试和开发。

API 还修复了 fetchWhenSave 无法作用在 File 类型字段的 Bug。

云代码发布了功能强大的全新命令行工具,可以本地创建、部署、发布、回滚和查询云代码项目,具体请参考 这篇博客

SDK 下载请到 这里

网站和 API

  • 网站首页 全新改版。
  • API 修复修复了 fetchWhenSave 无法作用在 File 类型字段的 Bug
  • 为 iOS 推送区分测试证书和生产环境证书。
  • 统计上线了错误报告功能。
  • 改进了 iOS 的 快速入门页面
  • 云代码修复模块导出无法使用 module.exports 的方式。

iOS SDK 2.1.1

  • fetch 和 refresh 成功后,需要清除本地数据,使用服务端的数据
  • AVOSCloudSNS 可以分享文字和图片了 (目前支持新浪微博)
  • AVOSCloudSNS 可以自动刷新 token 过期
  • AVOSCloudSNS 尊重新浪微博 AppKey 设置, 如果没有 SSO 设置, 也可以用 AppKey 来从 web 方式授权.
  • 原来用 SDK 内嵌的 AFNetworking 的会出现找不到 AFNetworking 的编译错误 (从 2.1.0 开始) 可以 #import <AVOSCloud/AFNetwokingFix.h> 来解决

CocoaPods 官方源已经更新.

也可以通过测试版的 Podspec 来使用我们几乎每天都会更新的开发中的 SDK:

pod 'AVOSCloud', :podspec => 'https://download.avoscloud.com/sdk/iOS/release-beta/AVOSCloud.podspec'

pod 'AVOSCloudUI', :podspec => 'https://download.avoscloud.com/sdk/iOS/release-beta/AVOSCloudUI.podspec'

pod 'AVOSCloudSNS', :podspec => 'https://download.avoscloud.com/sdk/iOS/release-beta/AVOSCloudSNS.podspec'

2013 年 12 月第一周 AVOS Cloud 更新

Hi,进入 12 月份。本周我们除了发布新版开发者平台(详情点击 这里)之外,也发布了 SDK 2.1.0 版本 。服务端也做了部分改进。下面是概述。

概述

SDK 方面,iOS 做了不少 Bug 修复,并且为 refresh 和 fetch 添加了 include key 的支持(android2.0.2 版本上周已经添加此功能)。Android SDK 2.1.0 没有太多变化,和 iOS 一样添加新的错误代码 210,表示用户登陆用户名和密码不匹配,此外修复了统计终端设备网络环境结果不一致的 Bug。

服务端,为云代码的 AV.Cloud.httpRequest 添加了 timeout 选项,默认为 10 秒,例如修改为 15 秒:

AV.Cloud.httpRequest({
  url: 'http://www.example.com/',
  timeout: 15000,
  headers: {
    'Content-Type': 'application/json'
  },
  success: function(httpResponse) {
    console.log(httpResponse.text);
  },
  error: function(httpResponse) {
    console.error('Request failed with response code ' + httpResponse.status);
  }
});

超时单位为毫秒。云代码还更新了七牛官方的 Node.js 模块,修复了无法上传文件的 Bug,我们贡献了一个 pull request。

云代码的本地部署功能还没有完全测试完成,需要等到下周才能正式发布。

网站服务这块,我们为 个人设置 添加了一个单独页面,方便用户管理自己的信息和团队等。

新开发者平台发布以来,很多朋友给了我们宝贵的反馈,在这里一并感谢。

下面是更新详情。

网站和服务端

  • 应用内用户登陆,如果用户名和密码不匹配,返回 210 的错误代码和 400 的 HTTP 状态码。
  • 云代码AV.Cloud.httpRequest 支持 timeout 选项,默认 10 秒。
  • /1/push API 推送指定 expiration_time 过期时间支持 unix 时间整数(单位秒)。
  • 改进 文档搜索 结果。
  • 修正开发文档中的错误。

Android SDK 2.1.0

  • 增加 USERNAME_PASSWORD_MISMATCH 错误常量
  • 修复统计设备网络不一致的 Bug。

iOS SDK 2.1.0

  • 解决子类化访问 AVRelation 时不会调用 relationforKey 的问题
  • 清理错误常量,增加 kAVErrorUsernamePasswordMismatch
  • 解决第三方库冲突问题。对第三方库进行改名处理,统一使用 AV 前缀。改名后,开发人员可以使用 AVOSCloud 自带的第三方库,也可以使用标准的第三方库。
  • 解决 AVQuery 重用时没有清理旧设置的问题
  • 解决 reverseQuery 的命名错误问题
  • 增加 fetch 和 refresh 的 include key 支持
  • 解决 fetchAll 出错时不会调用回调 block 的问题
  • 去除文件 url 为空时的警告

AVOS Cloud 开发者平台全新改版!

Hi, 朋友们。

我们刚更为 AVOS Cloud 发布了全新的 Web 管理平台,升级了 bootstrap 到 3.0 并做了部分改进,整体风格更加淡雅,能更好地保护您的眼睛:)。除了新 UI 之外,我们还添加了一些重量级的功能,例如支持团队协作,统计新增渠道分布、终端设备分析等。

简介

除了网站的 UI 做了改版,我们对一些链接也做了调整,管理平台在登录后可以最上面看到下列这些菜单:

20131204_menu.png

其中:

  • 开发者平台: 点击进入 开发者管理平台 ,查看所有应用。
  • 所有应用: 查看当前所拥有的 应用列表 ,可以直接创建新应用。
  • 资源: 开发文档、技术支持、健康状态服务、价格、一键登录云测试 (testin.cn) 等链接。
  • 关于: 关于我们、用户条款、官方博客等链接。

也许您还注意到,我们重新设计了网站 Logo。

新功能

一键登录云测试

我们跟 Testin 合作,为 AVOS Cloud 添加了一键登录功能。您可以直接从资源菜单点击云测试,登录到 Testin 平台,使用 Testin 提供的应用测试、一键发布等功能。

20131204_testin.png

统计新功能

我们还发布了一些新功能,首先主要是统计功能,主要包括:

  • 统计发布了按时间对比查看的功能,您可以针对某个一指标,选择两段时间做对比分析(我们称为同比分析)。在趋势图旁可以看到一个 按时间对比 的按钮,点击就可以选择其他时间做对比:

20131204_compare1.png

20131204_compare2.png

  • 为所有的统计指标添加了解释文字,解释每个指标的含义,可以在每个指标页面的下部看到:

20131204_stat_info.png

  • 新增 渠道分布 指标,可以查看每个发布渠道的新增用户、活跃用户、启动次数等对比:

20131204_channel.png

  • 新增 终端设备 分析,可以查看应用的终端设备类型的型号,OS 版本,运营商,网络状况等信息

20131204_device1.png

20131204_device2.png

组织和应用协作者功能

为了方便用户做团队协作,比如我可能想将一个应用分享给其他 AVOS Cloud 帐号,允许其他人管理这个应用,我们为大家提供了组织和应用协作者的功能。有了这个功能,AVOS Cloud 就非常方便用户之间做团队协作。

例如对于一个虚拟公司 SuperApp,公司老板可以创建一个组织叫 SuperApp,然后请公司的所有员工都注册一个 AVOS Cloud 帐号,公司老板将所有员工的 AVOS Cloud 帐号都添加到 SuperApp 这个组织里。假设老板创建了一个应用,比如叫 老鹰抓小鸡 的游戏应用作为公司的主打项目,接下来将 SuperApp 组织添加到该应用的协作者列表里,那么 SuperApp 所有公司的员工都可以在自己的 AVOS Cloud 帐号下访问和管理这个应用。

当某个新员工加入的时候,老板只要将他的 AVOS Cloud 帐号加入 SuperApp 组织,新员工马上可以访问这个公司的主打应用;当员工离职的时候,只要简单地将员工的帐号从 SuperApp 组织移除,就可以禁止他访问公司的应用。

组织可以是公司,也可以是小部门,甚至一个小团队。每个人都可以创建和管理组织。

组织

所谓组织是一个虚拟的团队概念,包括一个唯一的名称,任何人都可以创建组织,您可以在个人设置里找到组织管理,您可以在这里添加组织,管理现有组织:

20131204_team1.png

默认创建的组织只有一个成员,也就是组织的创建者,您还可以添加其他成员到组织,输入你想添加成员的 username,我们会自动提示您添加:

20131204_team2.png

您同样可以从组织中移除成员。

创建完组织后,您可以将整个组织添加到应用协作者,请看下面。

应用协作者

如果您想将一个应用分享给其他拥有 AVOS Cloud 帐号的用户,允许其他用户登录他们自己的帐号并在开发者平台管理这个应用,您可以将其他用户添加为应用的协作者。

进入应用设置,可以看到一个新菜单 协作者 :

20131204_cooperator1.png

您可以尝试添加协作者,协作者可以是个人,也可以是一个组织,当您输入的时候,我们将尝试提示您:

20131204_cooperator2.png

我们同时会提示您,这个名称对应的是个人还是组织。

  • 如果您将其他用户个人添加为应用协作者,那么该用户就可以在他帐号下的开发者平台看到您的应用,并且拥有跟您完全一样的超级权限来管理这个应用。
  • 如果你将某个组织添加为应用协作者,那么该组织下的所有用户都将拥有该应用的超级管理权限。

因此,请您慎重添加应用协作者

最后

新的网站还没有完全改版完毕,我们还在设计新的首页和文档风格。新管理平台刚发布,尽管我们做了很多人工测试,但是可能还会有一些 Bug 存在,欢迎您及时给我们提出反馈和意见。可以通过技术支持系统,也可以通过客服邮箱 (support@avoscloud.com) 和 论坛

感谢我们的设计师和前端同事的辛勤工作!

最重要的,感谢您的持续关注,我们在努力工作,让移动开发变得更简单!