为了改善小米终端用户的通知体验,营造良好可持续的推送生态,小米推送对推送消息数量、推送速率QPS进行了统一管理。
一、每日推送数量限制
根据《小米推送消息分类新规》,小米推送将消息分为“私信消息”和“公信消息”两个类别,若应用选择不接入私信或公信,则会接入默认通道。
消息类型 | 推送内容 | 推送数量限制 | 用户接收数量限制 | 申请方式 |
默认 | 仅可按照“公信场景说明”配置。 | 1倍 | 单个应用单个设备单日1条 | 无需申请 |
公信消息 | 新闻资讯、内容资讯、生活资讯、关注推荐、算法推荐、平台活动、互动信息等其他多类场景,具体请参见“公信场景说明”。 | 2-3倍,具体规则请参见“公信限制规则”。 | 单个应用单个设备单日5-8条,具体规则请参见“公信限制规则”。 | 需在推送运营平台申请,具体参见“小米推送消息分类新规”。 |
私信消息 | 需符合即时消息、个人账户、个人资产、个人订阅、个人日程、设备信息、订单及物流、工作信息这8类场景,具体请参见“私信场景说明”。 | 不限量 | 不限量 |
2023年2月1日起将按照本新规中的消息分类正式运行。
1、限制规则
私信消息的单日推送数量不受限,公信消息的单日推送数量将进行上限管理,具体如下:
公信消息单日可推送总量的计算公式:应用在MIUI上安装且通知开启数x倍数。默认倍数为2倍,具备《互联网新闻信息服务许可证》的应用为3倍,具体如表1所示。通知开启数小于10000的按10000计数。
表1 公信消息限制倍数
是否具备《互联网新闻信息服务许可证》 | 单个应用单日单设备通知推送数量限制倍数 (单位:倍) | 单个设备单日单应用接收通知数量 (单位:条) |
有 | 3 | 8 |
无 | 2 | 5 |
说明:
- “应用在MIUI上安装且通知开启”的定义:用户已激活应用且主动开启了总消息通知的开关。
- 单日推送限额数以“送达量”计算,当日送达量超限则会计入管控。
2、消息量申诉
若特殊情况需要额外提升推送量级,开发者可以向小米推送进行申诉。
申诉条件:
开发者因业务需要确实需要发送额外量级的消息,并且用户确实希望收到该应用的推送消息。
申诉方法:
联系邮箱:mipush-permission@xiaomi.com。
3、FAQ
3.1、如果推送数量超过当日限制时,会有什么提示吗?
推送数量超过当日限制时,会调用请求失败,返回错误码200001,原因:exceed quota, quota: 当日可以下发总数, have acked: 当日已送达数。
如果您接了消息回执callback,推送总量超限时callback会返回如下json(需要先订阅callback.type为128,参见“消息回执”):
{
data={
"axo00546585203029498oV": {"extra":{"ack":"当日已送达数","quota":"当日可以下发总数"},"type":128,"targets":"alias","timestamp":1585203103625}
}
}
说明:
如果调用我们的multi接口(例如/v2/multi_messages/regids)发送消息,在推送数量超过当日限制时,不会返回错误码200001,而是通过channel_exceed_quota字段返回本次请求中各个通道的超额消息数,例如:
{"result":"ok","trace_id":"******************","code":0,"data":{"day_acked":"50078","id":"******************","channel_exceed_quota":"no_channel:2 a:3 ","day_quota":"50000"},"description":"成功"]
上面的返回结果表明,本次请求由于推送数量超限,会有2条没有带channel_id的消息以及3条channel_id为a的消息不会下发,其余消息则会正常下发。
3.2、如何查询每日剩余可推送数量?
在调用推送请求的响应中会返回当日可下发总量和当日已送达数。
示例:
{"result":"ok","trace_id":"Xxo00563585646156570hY","code":0,"data":{"data":{"day_acked":1,"day_quota":250}},"description":"成功"}
- day_acked表示当日已送达数
- day_quota表示当日可下发总量
如果您希望通过独立接口查询,可调用如下API(1秒限调用1次):
https://api.xmpush.xiaomi.com/v1/trace/quota/get
HTTP请求方法:GET
添加HEADER字段Authorization,用于身份验证。格式是 key=<APP_SECRET>。
APP_SECRET是从开发者网站申请得到。
注意:字符key必须小写,例如:Authorization: key=YOUR_APP_SECRET
3.3、如果推送数量不够用,怎么办?
建议您优化推送策略,做精细化推送,尽量减少或避免全量用户的推送。
如果您的消息内容中有符合私信消息的内容,建议您申请和接入私信消息Channel,申请方式请参见《小米推送消息分类新规》,接入后该类消息将不受限制。
如果您确实有增加消息量的需要,比如有大量用户因收不到消息而投诉,您也可以向小米推送申请增加消息量级,申请方式请参见“消息量申诉”。
二、推送速率QPS限制
1、限制规则
小米推送对推送速率(QPS)的分配主要依据App的通知开关开启数进行分级计算。
QPS:表示1秒可调用的请求数。1个请求里最多可以携带1000个目标设备。例如:3000QPS时,1秒内最多可推送300万设备。
不同量级的通知开关开启设备数分配不同的QPS:
通知开关开启数 | QPS |
≥1000万 | 3000 |
≥500万且<1000万 | 2500 |
≥100万且<500万 | 2000 |
≥10万且<100万 | 1000 |
<10万 | 500 |
2、FAQ
2.1QPS超限时会返回什么错误吗?
QPS超限时会返回错误码200002, 原因:send message too frequent!
请降低您的并发请求数,确保每秒的请求数不高于QPS限制,否则将无法推送。
优化建议:
可以考虑多用聚合消息,降低QPS。
如使用https://api.xmpush.xiaomi.com/v2/message/regid 或者 https://api.xmpush.xiaomi.com/v3/message/regid 将单条消息发送给多个目标用户。