离线推送
用户的 App 不在前台时,新消息、好友和群的通知、音视频来电会经 Apple、Google 和各手机厂商的推送通道送到设备的通知栏,用户点击通知后回到 App。App 在前台、保持着长连接时,消息由长连接实时送达,不再推送。
接入离线推送分三步:
- 上传推送凭据:在控制台为应用上传各通道的凭据(如 APNs 的
.p8密钥、FCM 的服务账号),每份凭据有一个名称,见推送配置; - 客户端登记推送令牌:用户登录后,App 向系统或厂商申请推送令牌,连同凭据的名称登记到本服务,见客户端登记推送令牌;
- 按需定制:服务端发送消息时用
push字段指定通知的标题和内容、关闭推送或强制推送;用推送设备与设置的接口为用户设置免打扰,或排查用户的推送设备。
推送尽力而为
离线推送只是提醒:设备关机、通道拥堵、用户关闭了通知权限时都可能收不到,消息本身不受影响,用户打开 App 后由消息同步补齐。没有上传凭据的应用不会发出离线推送。
推送通道
| 通道 | channel | 设备平台 | 需要在控制台配置的凭据 |
|---|---|---|---|
| Apple 推送(APNs) | apns | ios、macos | .p8 密钥(推荐,不会过期,同一个密钥也用于 VoIP 推送),或 .p12 证书;分生产和开发环境 |
| Google FCM | fcm | android | Firebase 项目的服务账号 JSON |
| 华为 | huawei | android、harmony | App ID、App Secret |
| 鸿蒙 | harmony | harmony | 项目 ID、服务账号密钥 JSON |
| 荣耀 | honor | android | App ID、Client ID、Client Secret |
| 小米 | xiaomi | android | App Secret |
| OPPO | oppo | android | App Key、Master Secret |
| vivo | vivo | android | App ID、App Key、App Secret |
| 魅族 | meizu | android | App ID、App Secret |
各通道还可以填写消息分类、通知渠道等参数。每项材料在哪里获取、怎样测试,见推送配置。
- 一个客户端 App 一份凭据:每个应用最多 20 份凭据,同一个通道可以有多份。一个 IM 应用对应多个客户端 App(如主 App 和极速版、不同的包名)时,或者 iOS 的生产版和开发版,各上传一份,App 登记令牌时用凭据的名称指明是哪一份。
- Web、Windows、Linux 和小程序没有离线推送,只依赖长连接。
- 国内厂商的消息分类:国内厂商要求按内容申请消息分类(如即时通讯),没有申请或分类不对的推送会被限量甚至拒收。请在厂商后台申请后,把分类、通知渠道填写在凭据中。
各通道的能力不同:
| 通道 | 撤回后更新通知 | App 角标 | 来电 |
|---|---|---|---|
apns | 支持 | 支持 | 登记了 VoIP 令牌的设备发 VoIP 推送,App 向 CallKit 报告来电,显示系统的来电界面;没有的发高优先级通知 |
fcm | 支持 | 支持(桌面是否显示由启动器决定) | 发高优先级的数据消息,由 App 自行显示来电界面和通知 |
huawei、xiaomi | 支持 | 不带角标 | 高优先级通知,点击后进入 App |
honor、harmony、oppo、vivo、meizu | 不支持 | 不带角标 | 高优先级通知,点击后进入 App |
哪些设备会收到推送
- 登记了推送令牌的设备:用户登录后,App 在这台设备上登记推送令牌。没有登记的设备(包括 Web 等平台)收不到离线推送。
- 此刻不在前台的设备:没有长连接的,或者长连接还在、但 App 已经切到后台的(由客户端上报)。App 在前台的设备由长连接收到消息,不推送,统计为
skipped_online。一个用户的几台设备分别判断:电脑在前台时,后台的手机照常收到推送。 - macOS:桌面端保持长连接时一直算在前台,不推送,由 App 收到消息后自行显示本地通知;电脑休眠、App 退出、连接断开后才推送。
- 令牌跟随登录:退出登录、被踢下线或被挤下线、修改密码、封禁、删除用户、控制台要求全部用户重新登录后,这次登录登记的令牌随即解绑,这台设备不再收到这个用户的推送。用户再次登录后由 App 重新登记。
- 一台设备可以有多个令牌:最多 3 个普通令牌,按登记的顺序优先,如 Android 手机把本机厂商的通道放在第一个、FCM 作为备用。发送时使用第一个可用的:凭据被停用、删除或暂停,或者令牌失效时,改用下一个,同一条推送不会在一台设备上弹出两次。iOS 设备另外可以登记 1 个 VoIP 令牌,只用于来电。
- 一个令牌只属于一次登录:同一台手机上换了一个账号登录并登记同一个令牌,前一个账号在这台手机上的登记随即作废,即使它没有正常退出,也不会再收到它的推送。
- 失效的令牌:通道报告令牌无效(App 被卸载、令牌过期等)时,令牌约 1 分钟后删除。App 每次启动时重新登记,令牌没变时不受影响。
推送的内容
消息
| 消息 | 推给 |
|---|---|
| 单聊消息 | 接收者。发送者本人的其他设备不推送 |
| 群消息 | 除发送者以外的群成员。消息发出之后才入群的成员、已经被移出的成员不推送 |
以下消息不推送,即使设置了 push.force 也不推送:
- 群提示(成员变化、群资料变化等系统消息);
exclude_from_unread为true的消息;push.disabled为true的消息;- 只推在线的消息。
聊天室消息没有离线推送。消息发出 30 分钟之后才处理到的(如服务端积压)不再推送;已经交给通道的推送在通道中保留 24 小时,设备关机或没有网络期间的推送在恢复联网后送达。
合并:同一个会话在 1 秒内的多条消息合并为一条通知。第一条消息立即推送,之后 1 秒内到达的合在一起推送一次,显示其中最新的一条,正文前加上条数,如群消息的正文“[5条] 张三: 收到”;其中有 @ 本人的消息时,显示最新的一条 @ 本人的消息。群里刷屏时,每个离线的成员每秒大约只收到一条通知。
好友和群的通知
应用的运行策略 push_notice_enabled 关闭时(默认开启),以下通知都不推送:
| 通知 | 推给 | 内置的标题 | 内置的正文 |
|---|---|---|---|
| 收到好友申请 | 被申请的人 | 申请人 | 请求添加你为好友(不含申请附言) |
| 好友申请被同意 | 发出申请的人 | 同意的人 | 已同意你的好友申请 |
| 被对方直接添加为好友(本人的加好友方式为“允许任何人”) | 被添加的人 | 添加的人 | 已添加你为好友 |
| 有人申请入群 | 群主和管理员 | 群名称 | 李四 申请加入群聊 |
| 成员邀请他人入群,等待审批 | 群主和管理员 | 群名称 | 李四 邀请 王五 加入群聊,等待审批 |
| 收到入群邀请 | 被邀请的人 | 群名称 | 李四 邀请你加入群聊 |
| 被移出群(包括移出并拉黑) | 被移出的人 | 群名称 | 你已被移出群聊 |
| 群解散 | 解散时的群成员,群主自己解散时不含群主 | 群名称 | 群聊已解散 |
你的服务端或控制台添加的好友、本人同意的申请、本人退群和被删除的账号,都不推送:当事人自己知道,或不需要知道。
来电
音视频通话的来电推给被叫(群通话为被邀请的成员),通话被取消或没有接听时,用“对方已取消通话”或“[未接来电]”替换设备上的来电通知。不支持按通知 ID 覆盖的通道(见推送通道中“撤回后更新通知”一列)不能替换,会另外显示一条。
- 来电通知的有效期是剩余的振铃时间,过期没有送达的由通道丢弃,不会在通话结束后才响铃;
- 用户在一台设备上接听或拒绝后,他其他设备上的来电通知随之清除。鸿蒙、OPPO、vivo、魅族通道不支持清除,由 App 下次打开时清除;
- 来电不受会话免打扰影响,遵守全局免打扰和夜间免打扰,不计入应用的推送额度;
- 通话结束后写入会话的通话记录消息不再推送。
通知的标题和内容
通知的标题和正文由模板生成。模板按“模板键 + 语言”区分,内置简体中文(zh-CN)、繁体中文(zh-TW)和英文(en),可以在控制台中覆盖任意模板键在任意语言下的内容,见通知模板。消息的内置模板(简体中文):
| 情况 | 标题 | 正文 |
|---|---|---|
| 单聊消息 | 发送者 | 消息摘要 |
| 单聊,合并了多条 | 发送者 | [5条] 消息摘要 |
| 群消息 | 群名称 | 发送者: 消息摘要 |
| 群消息,合并了多条 | 群名称 | [5条] 发送者: 消息摘要 |
| 群消息 @ 了本人(包括 @ 全体成员) | 群名称 | [有人@我] 发送者: 消息摘要 |
| 以系统身份发送的群消息 | 群名称 | 消息摘要 |
- 发送者:发送者的昵称,没有昵称时为用户名;不使用接收者设置的好友备注和群昵称。已删除的用户显示为“已删除的用户”,以系统身份发送的显示为“系统”。
- 群名称:没有名称的群显示为“群聊”。
- 消息摘要:文本消息取前 100 个字符,换行替换为空格;图片、语音、视频分别为“[图片]”“[语音]”“[视频]”;文件为“[文件] 文件名”;位置为“[位置] 位置名称”;自定义消息和其他类型为“[消息]”。
- 长度:标题最长 64 个字符,正文最长 256 个字符,超出的截断并在末尾加“…”;部分通道的上限更小,由通道再截断。控制字符一律去掉。
- 语言:按设备登记的语言依次查找,找到即用:完全相同的语言;同一种语言的默认写法(
zh-TW、zh-HK、zh-MO和繁体中文取zh-TW,其他中文取zh-CN,其他语言取主语言,如en-GB取en);应用运行策略的push_default_language(默认zh-CN);内置的zh-CN。每一步都先找控制台中覆盖的模板,再找内置模板。例如覆盖了日语(ja)的单聊模板后,日语设备的单聊消息使用日语,其他推送仍使用默认语言。
预览方式
用户可以选择通知中显示的内容,没有选择时使用应用运行策略的 push_default_preview(默认 full):
| 预览方式 | 显示 | 单聊消息的标题 | 单聊消息的正文 |
|---|---|---|---|
full | 发送者和内容 | 张三 | 晚上一起吃饭吗? |
sender_only | 只显示发送者 | 张三 | 发来一条新消息 |
none | 都不显示 | 空,由系统显示 App 名称 | 你收到了一条新消息 |
- 预览方式优先于服务端在
push中给出的标题和正文:用户选择了sender_only或none,服务端给出的内容同样不显示。 - 好友和群的通知、来电不含消息内容,
sender_only与full相同;none时分别显示“你收到了一条新通知”“你有一个新的来电”“你有一个未接来电”。 - 推送的内容会经过 Apple、Google 和手机厂商的服务器。对隐私要求高的应用(如医疗、金融),建议把
push_default_preview设为none。
发送消息时的 push 字段
服务端发送消息时可以在请求体中带 push 对象,控制这条消息的离线推送:
| 字段 | 类型 | 说明 |
|---|---|---|
disabled | Boolean | 为 true 时这条消息不推送,默认 false |
force | Boolean | 为 true 时不受接收者的免打扰限制(会话免打扰、全局免打扰和夜间免打扰),默认 false。不能与 disabled 同时为 true |
title | String | 通知的标题,1 到 64 个字符,原样显示,不套用模板,也不替换其中的占位符 |
body | String | 通知的正文,1 到 256 个字符,规则同 title |
ext | Object | 随通知交给 App 的自定义数据,如点击通知后要打开的页面,JSON 编码后最多 512 字节 |
push中只能有以上字段,字符串中不能有控制字符;整个push按 JSON 编码不超过 2 KB。不符合时返回400 invalid_argument,details.reason为invalid_push,details.field指出字段。- 只给出
title或body其中一个时,另一个仍按模板生成。接收者的预览方式不是full时,title和body不生效,见预览方式。 force只让消息不受免打扰限制,不会让不提醒的消息变成提醒:同时设置了exclude_from_unread的消息仍然不推送。账户安全、订单异常这类必须送达的通知,请不要设置exclude_from_unread。title、body和ext原样交给通道和 App,不经过内容安全的检查,请自行确保内容合规。- 用户在客户端发送消息时,
push中只能设置disabled,以免用户在对方的锁屏上伪造系统通知。
以系统身份向群里发送一条必须送达的维护通知:
curl -X POST "$IM_API/$ORG/$APP/messages" \
-H "Authorization: Bearer $APP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"to_group": "100311272729346048",
"client_msg_id": "notice-20261005-01",
"type": "text",
"body": { "text": "今晚 23:00 至 24:00 系统维护,期间无法下单" },
"push": {
"force": true,
"title": "系统维护通知",
"body": "今晚 23:00 至 24:00 系统维护",
"ext": { "page": "notice", "notice_id": "N1001" }
}
}'push 不符合要求时:
{
"error": {
"code": "invalid_argument",
"message": "push 不符合推送模块的规则",
"details": { "field": "force", "reason": "invalid_push" },
"request_id": "TNDNXP7E23UBI3SARLL7P52XGP"
}
}免打扰
| 免打扰 | 说明 |
|---|---|
| 会话免打扰 | 对一个单聊或一个群设置:none 不推送这个会话的消息;mention_only 只用于群,只在有人 @ 本人时推送。应用运行策略的 push_mention_all_breaks_mute 开启时(默认开启),@ 全体成员也算 @ 本人。可以设置时长,到期自动恢复,也可以一直有效 |
| 全局免打扰 | 一段时间内(如“8 小时内不打扰”)或一直不推送任何消息和通知 |
| 夜间免打扰 | 每天的一个时段(如 22:00 到次日 07:30)不推送,可以跨过午夜,开始时刻算在时段内、结束时刻不算。按设置时提交的时区计算,时区不随设备变化:用户出差换了时区,需要重新设置 |
各类推送与免打扰:
| 推送 | 会话免打扰 none | 会话免打扰 mention_only | 全局免打扰 | 夜间免打扰 |
|---|---|---|---|---|
| 单聊消息 | 不推 | — | 不推 | 不推 |
| 群消息,没有 @ 本人 | 不推 | 不推 | 不推 | 不推 |
| 群消息,@ 了本人 | 不推 | 推 | 不推 | 不推 |
设置了 push.force 的消息 | 推 | 推 | 推 | 推 |
| 好友的通知 | — | — | 不推 | 不推 |
| 入群申请和邀请 | 对这个群不推 | 推 | 不推 | 不推 |
| 被移出群、群解散 | 推 | 推 | 不推 | 不推 |
| 来电 | 推 | 推 | 不推 | 不推 |
| 撤回后更新通知 | 照常更新 | 照常更新 | 照常更新 | 照常更新 |
- 免打扰只影响离线推送,不影响消息的接收和未读数。会话列表中是否显示免打扰图标、免打扰的会话是否计入角标,由 App 按同步到的设置决定。
- 用户在客户端设置自己的免打扰,你的服务端可以用推送设备与设置的接口替用户设置,如与自己 App 中的“消息提醒”开关同步。设置在用户的全部设备间同步。
- 用户退出或被移出群后,他对这个群的会话免打扰随之删除,重新入群时从正常推送开始。每个用户最多 10000 个会话免打扰。
App 角标
App 图标上的角标数按设备计算,同一个用户的 iPhone 和 iPad 各有自己的角标:
- App 切到后台时,由 App 上报当前应该显示的角标数(通常是未读总数,是否计入免打扰的会话由 App 决定),之后每推送一条消息或一个好友和群的通知,这台设备的角标加一并随通知下发,合并推送时加上合并的条数;
- 来电、撤回后的更新和测试推送不带角标,被免打扰挡住、设备在前台、超出推送额度而没有推送的不计入;推送发出后没有送达的不会回退;
- App 回到前台后自行更新图标上的角标,下次切到后台时重新上报。用户在其他设备上读了消息,这台设备的角标要等 App 下次打开时才更新;
- 应用运行策略的
push_badge_enabled关闭时(默认开启),推送中不带角标,由 App 自行处理;不支持角标的通道(见推送通道)不带角标。
撤回后更新通知
消息被撤回(包括被群主、管理员、你的服务端或平台撤回)后,设备上这条消息的通知被替换,原来的内容不再留在锁屏和通知栏上:发送者本人撤回的,替换为“张三 撤回了一条消息”;被其他人撤回的,或者接收者的预览方式为 none 的,替换为“一条消息已被撤回”。
- 只更新推送后 24 小时内撤回的消息,并且只经当时发出推送的那个令牌更新;通道需要支持按通知 ID 覆盖(APNs、FCM、华为、小米),其他通道上的原通知保留;
- 替换的通知不改变角标,尽量不响铃:APNs 不带声音;Android 由通知渠道决定,凭据中配置了静默渠道的使用静默渠道,没有配置的可能再响一次。用户已经划掉了原通知的,替换的通知会重新出现在通知栏中;
- 撤回时推送还没有发出的,不再发出;
- 撤回后的更新不受免打扰、应用停用和推送额度的限制:违规内容被撤回后,锁屏上的内容也要随之消失。
客户端登记推送令牌
推送令牌只能由 App 登记,你的服务端不能代用户登记。以下是客户端接口,用户以 User Token 调用,操作的是当前登录的设备,SDK 发布后由 SDK 封装:
| 方法 | 路径 | 说明 |
|---|---|---|
| PUT | /client/v1/push/device | 登记本设备的推送,整体替换:tokens 为普通令牌,最多 3 个,按顺序优先,每项为 credential(凭据名称)和 token;voip_token 为 VoIP 令牌,只用于 iOS,可选;language 为通知使用的语言(BCP 47,最长 16 个字符),可选;badge 为当前的角标数(0 到 99999),可选。返回推送设备对象,另带 changed |
| GET | /client/v1/push/device | 查询本设备的登记,没有登记过返回 404 not_found |
| DELETE | /client/v1/push/device | 注销本设备的推送,用于用户在 App 内关闭通知;没有登记过同样返回 204 |
| PUT | /client/v1/push/device/badge | 上报角标,请求体为 {"badge": 3};保持长连接时随长连接的状态上报即可 |
| GET、PATCH | /client/v1/push/settings | 本人的推送设置,格式同推送设置对象 |
| GET | /client/v1/push/conversations | 本人的会话免打扰,参数同查询会话免打扰 |
| PUT、DELETE | /client/v1/push/conversations/single/{username}、/client/v1/push/conversations/group/{group_id} | 设置、取消会话免打扰 |
登记的请求示例:
curl -X PUT "$IM_API/client/v1/push/device" \
-H "Authorization: Bearer $USER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tokens": [
{ "credential": "xiaomi-main", "token": "Lx9Qw2Er5Ty8Ui1Op4As7Df0Gh3Jk6Zx9Cv2Bn5Mq8We1Rt4Yu7Kd3P" },
{ "credential": "fcm-global", "token": "cR5tY8:APA91bF2gH4jK6lZ8xC0vB2nM4qW6eR8tY0uI2oP4aS6dF8gH0jK2lZ4xC6vB8nM0q" }
],
"language": "zh-CN",
"badge": 0
}'App 登记时注意:
- 何时登记:登录成功后、每次冷启动时、厂商的令牌刷新时,提交完整的登记。令牌和语言没有变化时
changed为false,可以放心重复调用。退出登录时调用退出接口即可,不需要另外注销推送,同时请清除 App 已经显示的通知,以免下一个登录的用户看到。 - 通道与平台:设备的平台取登录时提交的
platform。apns只用于ios、macos;huawei用于android、harmony;harmony只用于harmony;其他通道只用于android。VoIP 令牌只能登记在 iOS 设备上、能发 VoIP 推送的 APNs 凭据下。 - 令牌的格式:1 到 512 个可见 ASCII 字符;APNs 的令牌为 64 到 200 位十六进制。
- 系统通知权限:用户在系统设置中关闭了 App 的通知时,APNs 和 FCM 仍然接受推送(统计为
sent),只是设备不显示。请在每次冷启动和回到前台时检查通知权限,关闭时注销本设备的推送,重新打开后再登记。 - 前后台状态:App 切到后台时,随长连接上报后台状态和角标数;上报送达之前,服务端仍把这台设备当作在前台,不推送。
- Android 通知渠道:Android 8 以上,App 启动时创建凭据中配置的通知渠道(消息的渠道,以及低重要级别的静默渠道),渠道 ID 与凭据中的一致。
- 频率限制:每台设备每分钟登记和注销合计 10 次、上报角标 60 次;每个用户每分钟读取、修改推送设置和会话免打扰各 60 次。
登记失败时返回 400 invalid_argument,details.reason 说明原因:
details.reason | 原因 |
|---|---|
unknown_credential | 凭据名称不存在或已删除,details.credential 为名称 |
platform_mismatch | 凭据的通道不适用于这台设备的平台;或 VoIP 令牌不在 iOS 设备上、凭据不是 APNs 或不能发 VoIP 推送 |
platform_not_supported | 登录时的平台是 Web、Windows、Linux 或小程序,不能登记推送 |
duplicate_credential | 两个普通令牌属于同一份凭据,或同一个令牌出现了两次 |
invalid_token | 令牌的格式不对,或普通令牌超过 3 个 |
no_token | 没有任何令牌。注销请用 DELETE |
invalid_language | 语言不是 BCP 47 的写法 |
invalid_badge | 角标不是 0 到 99999 的整数 |
unknown_credential 和 platform_mismatch 是 App 的配置错误,重试也不会成功;登录已经失效时返回 401 session_revoked,按下线原因处理。
点击通知:每条推送都带一个交给 App 的 JSON 对象,放在通道的自定义数据中,键为 im。消息的通知中有会话类型 conversation_type、会话 ID conversation_id、消息序号 seq、消息 ID message_id、发送者的用户名 sender(预览方式为 none 时不带),以及服务端在 push.ext 中给出的内容 ext,App 据此打开会话、定位消息或跳转到自己的页面。
运行策略
以下运行策略控制应用的离线推送,见运行策略:
| 字段 | 说明 | 默认值 | 取值范围 |
|---|---|---|---|
push_default_preview | 用户没有选择时通知的预览方式 | full | full、sender_only、none |
push_default_language | 设备没有登记语言、或登记的语言没有对应的模板时,通知使用的语言 | zh-CN | BCP 47 语言标签,最多 16 个字符 |
push_badge_enabled | 推送中是否带 App 角标 | true | true、false |
push_notice_enabled | 是否推送好友和群的通知 | true | true、false |
push_mention_all_breaks_mute | 群设为只在 @ 本人时推送(mention_only)时,@ 全体成员是否也推送 | true | true、false |
这几项目前不在控制台的策略页面中显示,取默认值,需要修改时请联系我们。
此外,应用每分钟的推送次数受平台设置的配额 push_per_min_limit 限制,默认每分钟 60000 次,按设备计:消息和好友、群的通知计入,来电、撤回后的更新和测试推送不计入。超出的设备这次不推送,统计为 rate_limited。
应用状态的影响
| 状态 | 离线推送 |
|---|---|
| 应用停用、被暂停服务,租户暂停或处于注销冷静期 | 不推送消息、通知和来电,撤回后的更新照常发送;令牌、设置和凭据保留,恢复后照常推送,期间没有推送的不再补发 |
| 只读(平台设置或租户欠费) | 照常推送,客户端可以照常登记令牌、修改免打扰 |
| 应用删除、租户注销 | 不再推送,数据随之删除 |
推送统计与排查
控制台的“推送统计”按日期、通道、类别和结果统计推送的次数,保留 180 天,见推送统计。服务端不保存每一条推送的记录,也不提供厂商的送达和点击回执;排查某个用户收不到推送时,请按排查收不到推送的步骤查看他的设备和设置,并发一条测试推送。
推送的类别:message(消息)、notice(好友和群的通知)、call(来电、未接来电和取消)、dismiss(清除来电通知)、recall(撤回后的更新)、test(测试推送)。
推送的结果:
| 结果 | 含义 | 计数单位 |
|---|---|---|
sent | 通道已接受。只表示通道收下了这条推送,不表示设备已经显示 | 设备 |
failed | 通道拒绝了这条推送(如内容超长、这台设备当天的条数已满),或网络错误重试后仍失败,或凭据出错且设备没有其他可用的令牌 | 设备 |
invalid_token | 通道报告令牌无效,令牌已删除,且设备没有其他可用的令牌 | 设备 |
credential_unavailable | 设备的令牌所属的凭据都已停用或删除 | 设备 |
channel_paused | 凭据因通道限额、每日额度已满、连续鉴权失败等原因暂停中,设备没有其他可用的令牌 | 设备 |
rate_limited | 超出应用的推送额度 push_per_min_limit | 设备 |
queue_full | 服务端的发送队列已满,推送被丢弃 | 设备或事件 |
expired | 超过了时效:消息发出 30 分钟后才处理到,或在发送队列中等待超时 | 事件或设备 |
unsupported | 设备使用的通道不支持这种推送,如撤回后更新通知 | 设备 |
recalled | 推送发出之前消息已被撤回 | 用户或设备 |
skipped_online | 设备在前台在线,不需要推送 | 设备 |
skipped_dnd | 被免打扰挡住 | 用户 |
no_device | 接收者没有登记推送的设备 | 用户 |
统计中的通道为最后使用的令牌所属的通道;没有选出令牌的(如 skipped_online、skipped_dnd、no_device、credential_unavailable),通道为空字符串。
上限
| 项目 | 上限 |
|---|---|
| 每个应用的推送凭据 | 20 份 |
| 每台设备的推送令牌 | 普通令牌 3 个、VoIP 令牌 1 个 |
| 每个用户的会话免打扰 | 10000 个 |
| 会话免打扰、全局免打扰的时长 | 1 秒到 10 年,或一直有效 |
| 通知的标题、正文 | 64 个字符、256 个字符 |
push.ext | 512 字节 |
整个 push | 2 KB |
| 每个应用的模板覆盖 | 300 条 |
| 应用每分钟的推送次数 | 默认 60000 次,按设备计,平台配额 push_per_min_limit |
| 消息的推送时效 | 消息发出后 30 分钟 |
| 推送在通道中的有效期 | 24 小时,来电为剩余的振铃时间 |
| 推送统计 | 保留 180 天,一次最多查询 92 天 |
