消息推送

消息推送服务用于向客户端设备发送通知,云端统一对接 iOS 与安卓各自的推送通道,开发者只需调用一套接口。

推送的设备记录在数据存储里,可以像普通数据一样查询和更新;即时通讯的收件人不在线时,消息也会交给推送服务来送达。

功能

筛选推送目标

支持使用设备记录上的内建或自定义属性筛选目标设备。

统一消息格式

用统一的格式描述发送到 iOS 和安卓的推送消息,同时支持各平台特有的推送选项。

定时推送

推送可以指定时间发送,发出之前都能取消;也可以指定有效期,过期仍未送达的不再下发。

安卓混合推送

支持通过手机厂商的系统通道下发推送,绕开系统对后台进程的限制,接口与自有通道一致。

苹果推送

上传推送证书之后,由云端连接 APNs 进行推送。

推送记录

每条推送都会写入记录,可用于分析推送的送达和打开情况。

优势和特色

到达率高,省电省流量

基于 WebSocket TLS 通道,穿透性好,消息传递安全可靠。极简指令,自主二进制协议,省电省流量。

Android 混合推送

完美对接国内主流手机厂商的推送服务,提供可靠、统一的安卓推送解决方案。

APNs 专线连接

提供跨区域专线直连苹果推送服务集群,通道稳定可靠,保证消息全天候可达。

SDK 支持

客户端 SDK 覆盖这些语言和平台,发推送则可以直接调用 REST API。

Objective-C

iOS

Swift

iOS

Java

Android

C#

Unity

Flutter

iOS · Android

Unreal

Unreal Engine

技术介绍

推送与即时通讯共用基础设施,设备的长连接由同一个集群维持。推送请求先进入消息队列,推送服务再从队列里取出,检索出目标设备,把消息交给对应的长连接服务器下发。每个目标设备是数据存储 _Installation 表里的一条记录。

安卓的自有通道由 SDK 内的一个后台服务维持,尽可能维持常驻,若系统杀掉,则可以等到再次启动时获取离线期间的通知。安卓 8.0 起系统不再允许这样的后台进程长期存活,此后主要通过 FCM 以及各厂商提供的推送服务下发通知。

价格方案

以中国节点的价格为例。开发版有免费额度,商用版按用量计费,另有企业版需商务洽谈。

开发版商用版
推送请求频率免费 60 次 / 分钟600 次 / 分钟以内免费,每增加 600 次 / 分钟,每日费用 30 元
每日推送量免费 1 万次 / 天100 万次及以下免费,超出部分 0.5 元 / 万次
有效推送设备免费,最近 3 个月的活跃设备默认最近 3 个月的活跃设备,每延长 3 个月,每月费用 1000 元
REST API 请求免费 3 万次 / 天,与数据存储、即时通讯等服务共享额度1.0 元 / 万次

更新历史

  1. Unity 支持推送

    用 Unity 做的游戏可以直接调用推送,iOS 和安卓厂商的通道都覆盖。

    Unity SDK 支持推送功能

  2. 支持按设备 ID 推送

    推送目标可以直接给出一批设备 ID,不必先按查询条件筛一遍设备记录。

    2019 年 11 月更新·LeanCloud 2019 回顾

  3. 支持控制推送的下发速度

    推送可以指定每秒下发给多少个用户。

    2019 年 11 月更新·LeanCloud 2019 回顾

  4. 混合推送增加 vivo 和 OPPO 通道

    混合推送接入 vivo 和 OPPO 的推送通道,至此覆盖华为、小米、vivo、OPPO、魅族五家。

    2019 年 3 月更新·LeanCloud 2019 回顾

  5. 推出安卓混合推送

    安卓设备的通知改走小米、华为等厂商自己的推送通道,绕开系统对第三方后台进程的限制。

    2016 年 7 月更新

  6. 支持查看和取消定时推送任务

    尚未发出的定时推送可以逐条列出和取消,控制台和 API 都能操作。

    2016 年 1 月更新

  7. 推送记录从数据存储中独立

    推送历史不再存在 _Notification 表里,改为单独的推送记录,REST API 一并更换,推送因此不再依赖存储服务。

    2015 年 12 月更新

  8. JavaScript 支持推送

    网页上也能接收推送,不必自己搭一条长连接。

    2015 年 2 至 3 月更新

  9. iOS 推送支持双证书

    一个应用可以同时上传开发和生产两张推送证书,发推送时选择这次用哪一张。2015 年放开为多张证书,一个应用可以给不同的 app 推送。

    2014 年 12 月上旬更新·2015 年 5 至 8 月更新

  10. 支持用 CQL 指定推送目标

    筛选目标设备的条件可以直接写成 SQL 语句。

    2014 年 10 月下旬更新

  11. Windows Phone 支持推送

    Windows Phone 应用可以接收推送。

    2014 年 9 月下旬更新

  12. 支持按用户群推送

    统计分析里按行为和属性筛出的用户群可以直接作为推送对象。

    2014 年 6 月第二周更新

  13. 推出推送打开统计

    统计分析里增加推送打开一项,一条推送有多少人点开可以看到。

    2014 年 5 月第一周更新

  14. 支持定时推送

    推送可以指定在将来的某个时刻发出。

    2014 年 1 月第一周更新

数据来源

功能介绍与价格参考了 LeanCloud 官网的 消息推送产品页开发文档;「优势和特色」段落原文摘录自官网。技术介绍还参考了 实时通信服务架构:微服务和服务发现2015 年 8 月 7 日:实时通信服务宕机故障报告 两篇文章。

更新历史整理自 LeanCloud Blog 的产品更新汇总、月度通讯和单独发布的公告。