作者归档:Dennis Zhuang

Dennis Zhuang

关于Dennis Zhuang

AVOS Cloud Tech Lead

2015 年 12 月 LeanCloud 产品更新汇总

时间过得好快,我们已经站在了 2016 年的门槛上。有大家的陪伴和支持,我们在过去一年玩得开心而充实,希望大家也是如此!下面汇报一下 2015 年最后一个月我们所做的工作以及下一阶段的工作重点。

首先,我们正式发布了 LeanCache 缓存服务(Redis)。你可以使用它来做存储缓存加速,实现如秒杀、抢红包等特殊业务场景。详细内容请阅读 《高效内存存储服务 LeanCache 正式发布》。我们还启用了 新的云引擎网站托管域名 leanapp.cn

其次,我们正式发布了 对 Apple tvOS 和 watchOS 的支持 。我们还在测试新的聊天协议,该协议可以提升聊天性能,缩减流量。

继续阅读

2015 年 9 月 LeanCloud 更新汇总

LeanCloud 向大家送上迟到的中秋祝福,祝各位开发者身体健康、阖家幸福!

下面汇报一下我们在 9 月份所做出的产品改进。

网站和文档

首先,我们对「财务账单」做出了很大改进——交易历史菜单按照消费类型分类,发票申请的流程得以简化,界面也做了调整和改进。

其次,我们对应用设置菜单做了如下改进:

  • 在应用 Key 菜单引入「重设 master key」功能
    当发现 master key 意外泄露时,你可以主动将其重置。 请注意,重置将立即使旧 master key 失效,如果使用了云引擎,你需要做一次部署来强制更新 master key
  • 新增应用选项「只允许使用旧密码来修改用户密码」
    启用后,将只允许通过 updatePassword 接口使用老密码来修改应用内用户密码。
  • 新增应用选项「启用文件 SSL 域名」
    启用后,本应用上传的文件 _File 数据将使用新的 SSL 域名,特别针对 iOS 9 优化。

继续阅读

2015 年 4 月份 LeanCloud 更新汇总

许久没有向大家汇报 LeanCloud 近段时间的工作,这里罗列下我们这一个半月来所做的事情。

网站

  • 协作者权限细分到二级菜单,例如统计分析细分到应用趋势、行为分析、终端分析等二级菜单。
  • 列属性增加两种: 只读仅限当前用户读写 。其中 仅限当前用户读写 只对用户表有效。
  • 改进了 Class 权限和 ACL 编辑功能,Class 权限增加了 仅限登录用户 的快捷设置。
  • 单行记录展示优化,点击对象的 objectId 可以看到格式化后的完整对象信息。
  • class 的应用内搜索设置增加强制重建索引的按钮。
  • 发布了 控制台使用说明文档 ,推荐开发者详细阅读,了解控制台提供的众多功能。
  • 修复部分 Bug: Relation 列查询个数错误,API 统计日期显示错误等,感谢用户的积极反馈。

存储服务

  • 查询结果的 ACL 过滤实现前置过滤,不会再出现因为 ACL 导致查询结果不符合 limit 限定的缺陷。
  • 创建对象也将尊重 SDK 的 fetchWhenSave 设置,返回创建后的对象,而不仅仅是 objectId 等基本信息。
  • 用户反馈组件的推送增加过期时间和 iOS badge 提示。
  • 修复数据导入没有通知文件格式错误给用户的 bug。
  • 开放 API 用于第三方 iOS 证书上传。
  • 修复测试环境 iOS 证书无法下载的 bug。
  • 修复事件流新关注用户的 status 时间乱序问题。
  • 改进短信重设密码安全改进,增加流控和缩短过期时间。
  • 修复列默认值类型检测漏洞。
  • 强制检验 iOS 上传证书类型是否匹配环境类型。
  • 云代码仓库设置支持 SSH 协议

离线数据分析

  • 加速每日 dump 数据转换。
  • 准备开放日志表服务,更便宜,更易于分析。

消息服务

  • 修复开放聊天室更新属性和取历史记录的 bug
  • 增加敏感词库
  • 增加对话相关的云代码 hook,参考 实时通信文档
  • 一些 Bug 修复:未读消息、离线消息等
  • 单独的实时通信 REST API 文档

云代码服务

  • Node 依赖缓存,加快部署速度。
  • 部署日志优化,显示部署步骤等信息,方便用户查看。
  • 修复动态路由和静态路由的优先顺序问题,在使用 avos-expression-cookie-session 中间件可以避免大量无谓的 fetchUser 请求。
  • 修复云代码如果最后一样是注释的情况下编译出错的 Bug
  • 修复 AV.Cloud.httpRequest 提交数据包含中文错误的 Bug。
  • 改进了错误日志收集和展现。
  • 修复极端情况下路由错误 Bug
  • 云代码函数的 response.error 可以传入 AV.Error 对象,或者 {code: xxx, message: 'error message'} 的 JSON 对象,用于自定义错误代码。

iOS SDK v3.0.3

  • AVInstallation 增加 deviceProfile,支持 iOS 多证书推送(网站暂未上线此功能,请留意通知)
  • 实时通信的 ClientId 支持最多 64 个字符
  • 修复大文件上传取消不成功的问题
  • 修复通过短信验证码登录后 mobilePhoneVerified 仍然为 NO 的问题
  • 修复部分消息解析时崩溃的问题
  • 更多详情参考 下载页面的更新历史

Android SDK v3.1.5

  • 修正 AVIMConversation 获取 Attribute 时遇到 NPE 的问题
  • 修正实时聊天在多用户登录时出现 conversation 缓存冲突的 bug
  • 修正 SNS 模块 SSO 授权之后 SNSBase.authorizedData() 返回 null 的异常
  • 增加了 AVUser.friendshipQuery 接口,让用户可以一次性同时获取粉丝和关注列表
  • 增加 AVIMClient.getOnlineClients 接口来实现在线客户端查询功能
  • 更多详情参考 下载页面的更新历史

Python SDK v1.0.8

  • 支持 Python 2.6

JavaScript SDK v0.5.1

JavaScript Realtime SDK v2.0.6

  • 提供兼容 IE8+ 低版本浏览器的插件方式
  • 开放 secure 选项,用户可以手动关闭 SSL 协议
  • 修复 2.0.1 发布以来的一些 Bug,详情参考 changelog

其他

  • 发布了 LeanCloud 新的统计客户端,请从 这里 下载
  • 重构了文档结构,以功能为核心来组织文档,希望能帮助大家更好地阅读和查找文档。

2015 年 2 月下旬到 3 月上旬 LeanCloud 更新总结

年过完了,大伙都回来上班了。这里跟大家汇报下,年前和年后这四周,我们都做了哪些事儿。

主要变更

闲话不提,先说说开发者们可能比较关心的改动。

首先,我们拆分了短信购买和账户余额。现在,短信额度可以在「财务」菜单里单独购买,购买后的额度将不会从每月的账单中扣除,从而避免了先前每月账单扣除可能导致短信余额不足的问题。我们会提供一段过渡时间让用户来购买短信额度,因此建议使用短信服务的用户尽快采取行动。另外,在余额用完之前,系统会通过短信和邮件向用户发送通知,所以强烈建议用户在开发者账户信息中填写手机号码,以接收我们的提醒短信。

其次,我们正式对外发布了 JavaScript Push SDK。借助它,开发者可以在网页上接收和推送消息,轻松实现弹幕和在线客服之类的应用。源码开放在 leancloud/js-push-sdk 上,开发指南文档在 这里 。我们还改进了 JavaScript SDK 的 AV.Promise 实现,兼容标准,增加了 donecatchAV.Promise.race 等方法,并补充了文档说明。

最后,我们合并了文档项目,不再区分内部和外部项目,并开放了文档生成程序。我们还发布了 Awesome LeanCloud 网站,供大家查看和提交 LeanCloud 开源生态周边的工具或软件。

网站和文档

网站方面我们做了非常多的细节改进,可能大家未必能注意到。例如:API 统计专门增加了从云代码平台发起的调用统计、应用选项勾选会提示保存成功、改了 API 在线测试工具 以支持 keys 和 include 查询等等。许多小的调整,希望能让大家在使用管理功能时感觉更容易,更方便。

网站的其他改动:

  • 在应用设置里,增加了「转让应用」功能。
  • 创建应用时,可以选择拷贝一个来源应用的数据 Schema。
  • API 统计里,加了饼状图展现,可以根据平台、Class 或者操作类型做对比展示。
  • 拆分短信购买,可以通过支付宝或账户余额购买短信,短信额度不会从每月账单里扣除。

(API 饼状图分析)
Snip20150313_3

最重要的是,我们合并了内外部文档项目,不再区分内部文档和外部文档项目,统一为 LeanCloud/docs,并且开放了文档生成代码。我们还对文档做了大量的优化。我们的新同事已开始对各个 SDK 的开发指南做深入的 Review 和优化,希望能带给大家更好的阅读和使用体验。同时也特别欢迎大家去 fork 我们的项目,并提出改进意见。

最后,我们的工程师还发布了一个名为 Awesome LeanCloud 的聚合网站。在这里你可以看到由社区维护的 LeanCloud 开源生态周边:多语言 SDK、最佳实践库、UI 组件、云代码模块等等。我们欢迎更多的开发者们来提交象多语言 SDK、最佳实践库、UI 组件、云代码模块等类库。

API 服务

  • 短信模板的上限调整为 10 个。
  • 增加 /date API 返回服务器时间。
  • 修复匿名用户转换正式用户相关问题。匿名用户将在两种情况下转换为正式用户:提供用户名和密码注册或者更新、链接到一个第三方登录账号。
  • 改进了应用内搜索:不需要填写组件配置就可以使用应用内搜索,支持 include 查询,增加重建索引 API。
  • 查询的 keys 参数支持反向选择,加上减号的字段将不在查询结果里返回,例如 keys=-name,-age 则查询结果不返回 nameage 字段。
  • 改进了 /push 接口的错误提示,当推送涉及 iOS 设备且没有上传证书或者没有安装 Installation 的时候提早报错。
  • 改进了数据导入,如果出错,在通知邮件里说明详细的错误信息。
  • CQL 做了改进:limit 和 order by 子句可以任意排序,支持 select -name,-age from Player 的过滤选择,不返回 agename
  • 短信签名增加长度校验,要求在 10 个字符内。

消息推送及聊天

  • iOS 推送支持 iOS 8 引入的 titletitle-loc-keytitle-loc-args 等新字段,并更新了文档。
  • 发布了 JavaScript Push SDK,支持网页推送。
  • 实时通信增加了 错误码文档
  • 消息推送增加了 问题排查文档 ,方便自助分析推送问题。
  • 聊天持续增强稳定性和性能。

云代码

  • 彻底解决了 nginx 偶尔 502 的问题。
  • 测试环境和生产环境做了分离。
  • 命令行工具发布 0.6.6 — 0.6.8 版本,详细更新日志请看 这里

iOS SDK v2.6.11

  • 聊天修复 session 关闭后重新打开导致 group.sessionnil 的问题。
  • 添加创建 transient 属性群组的接口,可用作临时聊天室。
  • 用户反馈添加推送答复给用户的功能。
  • 修复匿名用户转换正式用户的相关问题。
  • 修复离线时被邀请入群后接收离线消息的问题。
  • 添加缓存获取失败后请求重试次数限制。

Android SDK v2.7

  • 增加了匿名用户转化为正式用户的处理逻辑。
  • 提高了统计的使用时长的准确性。
  • 修正了社交组件的 WebView 实现在 Android 4.2 以后出现的卡在 WebView 上的问题。
  • 修正了 AVObject.toJSONObject 方法中,遇到 Pointer 时的序列化异常。
  • 聊天 onMessageSent 中获取的 AVMessage 对象补齐 fromPeerId
  • 聊天正确更新 SessionManageronlinePeerIds 的数据。

JavaScript SDK v0.5.0

  • 增强 AV.Promise,增加 donecatchfinallyAV.Promise.race 等方法,兼容 Promise/A+,并更新了开发指南和 API 文档。
  • 修复更新对象可能更新没有变更的属性的 Bug,减少请求流量。
  • 拆分 SDK,按照模块划分成多个文件。
  • 使用 gulp 构建 SDK,清理代码。
  • 修复事件流无法发送带有 AV.FileAV.Object 等类型的 Status。
  • 修复 node.js 环境下上传文件没有扩展名的 Bug。

Unity3D SDK

  • 修复 AVQuery 查询中文字符时的错误。
  • 升级支持 Unity 5.0。

2015 年 2 月上旬更新汇总

在春节来临之间,LeanCloud 祝福所有开发者羊年大吉,阖家幸福。

2 月份到今天为止,我们为 LeanCloud 增加了不少更新,汇总如下。

网站和控制台

  • API 统计增加云代码平台调用统计。
  • 云代码在线编辑增加 AV.Cloud.onLogin 函数,支持在用户登录前执行检查操作。
  • 离线数据分析增加导出和保存为 class 功能,您可以导出查询分析结果,或者将查询结果保存为 Class 数据以供增删改查。
  • 离线数据分析的查询增加耗时提示。

存储和离线分析服务

  • 修复 _Follower_Followee 在取消关注的时候没有触发云代码 afterDelete/beforeDelete 的 Bug
  • 用户反馈组件支持推送消息给用户。
  • 修复删除列没有同时删除索引的 bug
  • 离线分析增加对应用间共享 class 的支持
  • 离线分析支持结果数据导出和另存为 class 功能。

聊天服务

  • 增加获取群组在线人数 REST API。
  • 预告:我们即将推出全新设计的聊天 2.0 SDK,新 SDK 将更易于使用,效率更好,敬请期待。

云代码服务

  • 云代码因为压力和容量问题,上旬遇到了故障,请查看 《02-10~02-11 云代码故障说明》,对此我们表示万分抱歉。
  • 集中精力提升云代码服务的稳定性,特别是部署和运行。
  • 系统针对春节流量的扩容运维等。
  • 云代码命令行工具 发布 0.6.5,增加 onLogin hook 支持、增加 lint 命令、兼容 io.js、修复一些 Bug 等,建议升级。

推送服务

  • 改进 iOS 推送,提高稳定性。
  • _Notification 表针对 iOS 推送消息增加 invalidTokens 字段,表示本次推送遇到的无效设备总数。

Android SDK v2.6.11

  • 改进文件上传策略提高小文件上传进度精度

iOS SDK v2.6.10.2

  • 修复聊天连接断开可能导致崩溃的问题
  • 修复崩溃统计开关无效的问题,添加开关设置完成回调接口
  • 修复一处内存泄露问题

2015 年 1 月 LeanCloud 更新汇总

非常抱歉,2015 年的 1 月份我们做了很多事情,但是在博客上跟大家说的太少,这个汇总因为种种原因延迟到现在。
春节即将到来,LeanCloud 提前向开发者们道一声春节快乐,在新的一年,我们将继续努力,为大家提供更优质的功能和服务。
想必大家领了年终奖了,归心似箭,因此我们长话短说,进入 1 月份的更新汇总。

综述

1 月份,我们网站重点是加了协作者的细分权限,每个协作者可以设置存储、消息、设置等权限。其次,增加了 JavaScript 域名白名单设置,提升前端使用 JS SDK 的安全性。
实时通信推出了云代码集成功能,可以在云代码中对接收消息等操作编写自定义逻辑。
云代码增加了支付宝和微信的接入示范,并持续性地改进部署和运行的稳定性。
Android SDK 正式推出官方 Maven 仓库,并支持 Gradle 构建。
更详细的介绍请看下文的各部分更新摘要。

网站服务

  • 加入协作者细分权限,现在您可以给应用的协作者设置更细分的权限:分析、模块、消息、设置等,只有拥有这些权限的协作者才可以访问相应的模块,否则都会收到屏蔽。

Snip20150203_2

协作者细分权限对于团队也同样起作用,设置后还可以修改。原来的协作者都默认为拥有所有权限。

  • 消息推送界面,改进了推送时间指定输入框,加入时间控件。
  • 应用设置的基本信息菜单增加 JavaScript SDK 安全域名 设置,对于在浏览器直接使用我们 javascript sdk 的用户,推荐设置一个域名白名单,只允许该域名下的 JS SDK 调用我们的 API。

Snip20150203_3

  • 完善了云代码统计,增加了函数调用次数、HTTP 状态码等统计。
  • 应用列表上方增加了应用搜索框,方便您快速找到应用。

API、推送、离线数据分析等后端服务

  • 增加对 JavaScript 域名白名单的限制。
  • 支持协作者细分权限功能的 API
  • 七牛域名 qiniudn.com 故障情况下,大部分应用都已经切换到 clouddn.com 域名,如有问题请联系我们。
  • API Bug 修复,包括:
    • 跨应用 include pointer 无效
    • beforeDelete、afterDelete 在数据管理平台没有生效的
  • API 增加了异常告警,根据昨天和 7 天内的 API 调用状况,如果浮动幅度过大,将发送告警邮件给用户。
  • 支持云代码提供的 onLogin Hook,在用户登录前做一些自定义逻辑。
  • 推送启用了新的索引引擎,加快推送速度和提升稳定性。
  • 离线数据分析改进了数据转换和导入备份数据流程,提升效率。关于离线数据分析,可以理解成我们推出的 BigQuery 服务,您可以利用他对应用数据做出分析和汇总,参考 LeanCloud 离线数据分析功能介绍
  • 离线数据分析结果导出和写入数据存储功能正在开发,预计下周可以跟大家见面。

实时通信(聊天)

  • 支持云代码 Hook,可以在收到消息等情况下做一些自定义逻辑,参考 实时通信云代码集成
  • 发布 /1.1/rtm/messages 的 REST API,可以用来给指定 Peer 发送消息,参考 REST API
  • 聊天 JavaScript SDK 也支持对 JavaScript 的域名白名单设置。

云代码

  • 增加云代码接入支付宝的例子:https://github.com/leancloud/cloud-code-alipay
  • 增加接入微信的实例 https://github.com/leancloud/cloud-code-weixin
  • 支持 __local 变量用以标示 avoscloud 命令行工具运行的本地开发环境,并更新相关文档。
  • 云代码统计增加 http status 统计。
  • 云代码开始支持 onLogin ,在用户登录前做一些自定义逻辑。
  • 提升部署稳定性和运行稳定性,内部重构等。
  • 云代码命令行工具 发布 0.6.3 版本,修复 Windows 环境无法创建项目的 Bug、修复可能的 401 错误、修复 CQL 无法执行 count 查询的 Bug 等,推荐升级。
  • 预告下,我们不久将推出云代码对 Python 语言的支持,敬请期待。我们的 Python SDK 已经可以测试使用。
sudo npm install -g avoscloud-code

Android SDK 最新 v2.6.10.4

除了 Bug 修复和功能改进之外,最大的改进在于我们提供了 Maven 仓库—— http://mvn.leancloud.cn/nexus/ ,以及 Gradle 构建 支持,推荐大家使用,具体参考我们的 Android 开发指南

  • 修正了 AVUser.followerQuery(Class clazz) 的当前登录用户验证问题
  • 修正了反馈组件中选择图片的 string 资源引用问题
  • 增加了 AVUser.signUpOrLoginByMobilePhone 接口支持通过短信验证码直接注册或者登录用户功能
  • 在统计信息中间增加 IMEI 信息统计(前提是提供了权限)
  • 改进了 wrong content type 异常的报错信息
  • 改变 AVUser 的 currentUser 的缓存策略,只有登录用户才会进行缓存
  • 支持 Gradle 配置构建,推荐新项目都使用 Gradle 进行构建,我们提供了官方 maven 仓库。
  • 修正 AVFil e 在上传过程中可能遇到的资源泄露问题和取消上传无法成功的问题
  • 修正实时通信模块中可能存在的 Session 状态异常问题
  • 修正在 PushService 重启后,实时通信中可能存在的 NPE 问题

iOS SDK v2.6.10.1

  • 修复 AVFile 缓存多次的问题
  • 修复 IM 内部 float 类型解析不对的问题
  • 修复 w atchPeerIds 可能引起阻塞的问题
  • 添加 AVGroup join 被拒绝的回调
  • AVPush 添加 setPushToWP 接口,定向推送到 WindownsPhone 手机
  • AVPush 添加 setPushToTargetPlatforms 接口,指定平台发送推送消息
  • 聊天 AVSignature 添加 error 属性,签名错误使用此属性
  • AVUser 添 加使用手机号直接注册或者登录接口 “
  • 修复 AVInstallation badge 不能保存的问题
  • 修复 iPhone 6 上用户反馈界面黑块的问题
  • 修复 SNS 登录后没有回调的问题

JavaScript SDK 0.4.7

  • 修复浏览器里页面跳转更新 user 导致 current user 属性丢失的 Bug。
  • 增加 AV.User.updatePassword 方法,根据老密码修改成新密码。
  • AV.Object 增加 getObjectId, getUpdatedAt, getCreatedAt 三个方法。
  • 增加 AV.User#signUpOrlogInWithMobilePhone 手机一键登录。
  • 一些内部改进和重构。

Unity SDK v1.1.8

  • 修复了自定义统计时间的传入的参数格式
  • 自定义统计中自定义参数在网站控制台不显示的问题

2015 年 1 月 23 日云代码服务故障公告

  • 时间: 2015 年 1 月 23 日凌晨 01:30 到 上午 9:30 左右,持续 8 个小时
  • 现象:部分依赖于云代码的应用的云代码请求返回 502 状态码的应答,不依赖云代码的应用没有受到影响。
  • 原因:为了对云代码部署服务做扩容,我们增加了新的部署节点,但是因为配置文件没有同步,导致新节点的服务没有正常启用,分配到该节点的部分应用受到影响。
  • 解决:在意识到是配置文件之后,我们的工程师迅速同步了配置,并重新启动了受影响的应用,服务恢复。

这次故障持续时间较长,暴露了我们在监控和告警上的短板。我们很惭愧,将做如下一些改进:

  • 针对云代码服务 502 状态应答增加报警,提高告警优先级。
  • 改进部署流程,做配置复查。
  • 改进云代码的容灾,在极端情况下,可以将受影响服务自动迁移到新节点。