月度归档:2019年03月

游戏实时对战及排行榜服务将于 4 月 9 日开通商用方案

LeanCloud 游戏实时对战服务及排行榜服务自上线以来受到了众多开发者的青睐,大家熟知的 Google 小游戏《猜画小歌》就是我们游戏服务的用户之一。鉴于商业用户对于云端服务稳定性的要求,我们将于 4 月 9 日起为这两项服务提供免费和付费两种方案,具体如下:

实时对战

实时对战服务从 CCU 和流量两个维度来统计使用量和计费。

  • CCU:同时在线用户数,以当天最高的同时在线用户数为准进行收费。最高支持 5000 CCU,超过 5000 CCU 需使用企业版。收费单位为每 500 CCU,不足 500 按 500 计算。
  • 流量:通信过程中所使用的流量。数据体积越大,通信频率越高,产生的流量也会越大,按照实际用量进行计费。

华北/华东节点

开发版 商用版
CCU 免费 20 CCU / 天 ¥ 25 / 500 CCU / 天
流量 免费 1 GB / 天 ¥ 0.8 / 1 GB / 天

国际节点

开发版 商用版
CCU 免费 20 CCU / 天 $ 4 / 500 CCU / 天
流量 免费 1 GB / 天 $ 0.1 / 1 GB / 天

您可以前往 LeanCloud 控制台 > 游戏 > 实时对战 > 统计 页面查看应用当前的用量。

注:付费方案仅涉及实时对战通讯云部分,Client Engine 服务将继续免费使用。

排行榜

排行榜服务按照请求数量和存储空间来统计和计费。

  • 请求数量:调用排行榜相关接口的请求总数量。收费单位为 1 万次请求,不足 1 万按 1 万次计算。
  • 存储空间:
    • 按照榜单内的总记录数进行收费,包括当前版本的总记录数,以及可选保留的上一个版本总记录数。例如您有一个排行榜 world,除了当前版本的榜单外,还选择保留一份历史版本数据供客户端查询,当前版本的榜单内有 2 万条数据,上一个历史版本中有 1 万条数据,总记录数为 2 万 + 1 万 =  3 万条数据。
    • 收费单位为 1 万条,不足 1 万按 1 万条记录计算。

华北/华东节点

开发版 商用版
请求数量 免费 1 万次请求 / 天 ¥ 2.5 / 万次请求 / 天
存储空间 免费 1 万条榜单记录数 ¥ 0.05 / 1 万条榜单记录 / 天

国际节点

开发版 商用版
请求数量 免费 1 万次请求 / 天 $ 0.4 / 万次请求 / 天
存储空间 免费 1 万条榜单记录数 $ 0.01 / 1 万条榜单记录 / 天

您可以前往 LeanCloud 控制台 > 统计 > 排行榜 > 统计 页面查看该服务的使用量。

如果您有任何疑问,请发邮件至 support@leancloud.rocks  或提交工单来咨询。

安卓混合推送升级|二月刊

产品动态

游戏解决方案(Play)

二月份我们的游戏服务迎来了更多的开发者,同时也经历了他出生之后的第一次春节流量考验,虽然出现了临时扩容的紧张与慌乱,但所幸结果一切顺利,没有在全国人民面前掉链子,也让我们倍感欣慰。

实时对战 JavaScript SDK 支持 Promise 方式

前两天我们发布了 JavaScript SDK v0.18.0 正式版本,将异步调用的处理方式进行了一次升级,在原来的事件回调基础上,增加了 Promise 方式。例如在老版本 SDK 里用户连接至实时对战服务器的过程为:

// 发起请求
client.connect();

// 响应连接成功事件
client.on(Event.CONNECTED, () => {
  console.log('on joined lobby');
});

现在可以直接这样实现:

client.connect().then(()=> {
  // 连接成功
  console.log('on joined lobby');
}).catch((error) => {
  // 连接失败
    console.error(error.code, error.detail);
});

新版本完全遵循 ES6 Promises 标准,相信可以让大家开发起来更加方便。

游戏开发教程

应广大开发者的要求,我们工程师小姐姐还专门录制了四期直播课程,介绍游戏开发中的一些小窍门,有兴趣的朋友可以访问官网的学习页面或通过以下地址直接观看:

安卓混合推送升级

华为 HMS 推送增加 IntentUri 支持

对于华为的 HMS 推送,之前我们支持的版本缺少通知栏点击的自定义动作支持(推送请求的 IntentUri 参数),本月我们服务端上线了这一功能,现在开发者使用 v4.7.0 以上版本的混合推送 SDK,就可以使用这一功能,具体用法可以参考文档:HMS 推送接入指南

新功能预告

我们计划在 3 月份增加对 VIVO 推送支持,但是因为我们自己客户端数量有限,怕测试不完全,所以我们会推出一个 early-bird 版本,邀请大家参与前期测试。欢迎感兴趣的开发者通过发送邮件或者在项目 repo 下直接报名参与,谢谢。

Share

使用 Leancloud 实现 React Native App 的消息推送 – Android 篇

在 React Native 开发过程中征服的一个小小领域:消息推送。

【游戏开发】如何实现手游中的账户系统

这篇文章以 Unity 游戏引擎中的 C# 语言为示例,主要讲解如何实现几种主流的登录方式,包括游客登录、游客账号升级、手机号验证码登录、用户名密码注册及登录。

常见问题

【存储】怎么存储和获取音频/视频文件的时长 ?

AV.File 的 metaData 属性,可以用来保存和获取该文件对象的元数据信息。可以在上传音频文件时获取音频长度然后通过 metaData 方法手动添加文件时长。

【即时通信】对话查询如何区分单聊还是群聊?

SDK 层面不区分单聊和群聊。可以使用会话的成员数量做区分。「会话成员数量为 2」即是单聊,大于 2 即可看作群聊。

【即时通信】语音消息如何标记消息是否已经播放,类似微信语音消息标记是否已读的小红点,可以提供一些思路吗?

因为一个群里可能有很多人,每个人对一条消息都有一个「是否已播放」的状态,所以建议在客户端维护这个「未播放」状态。

做法之一是可以在客户端维护一个「收到了但是没有播放的音频文件」列表,然后拿到消息文件对比一下客户端是否已经播放过。

【即时通信】使用 where 查询条件查询某用户的会话列表,为什么查询结果是系统内所有用户的会话?

当没有添加任何 where 查询条件时,query 会使用默认查询条件 where={"m":{"$in":["client ID"]}},即查询成员含有此 client ID 的对话;当添加了任意 where 查询条件时,query 会严格按 where 条件来查询,即覆盖默认的 where 查询条件。

以 Objective – C 举例,添加了自定义的 where 查询条件时,如果想查询含有此 client ID 的对话,使用 [query whereKey:@"m" containedIn:@[@"client ID"]] 增加一个查询条件即可。