厂商消息分类与配额管理最佳实践
Android 厂商通道普遍对通知消息进行分类管理,并对不同类型消息设置差异化的提醒方式、推送总量、单设备接收数量和 QPS 限制。合理使用消息分类和配额策略,可以提升重要消息到达率,也能避免运营消息占用关键资源或被厂商限制。
本文面向通过极光推送使用小米、华为、荣耀、OPPO、vivo、魅族、FCM、华硕、鸿蒙等通道的开发者,帮助您梳理消息分类、配额扣除、下发策略和排查方式。
核心原则
- 先按业务类型判断消息性质,再选择厂商分类字段,不要只从“想提高到达率”出发设置系统消息。
- 用户强相关、需要及时知道的消息,优先按厂商规则申请重要消息分类。
- 内容推荐、活动推广、平台公告等消息,应按运营消息或营销类消息处理,并配置频控。
- API 下发时优先使用
options.classification标识消息类型,避免各厂商字段互相冲突。 - 对小米、OPPO 等支持
skip_quota的厂商,不要把它当作“绕过厂商限制”的能力;它只表示是否跳过极光侧配额判断及扣除,厂商限制仍然生效。 - 强制走厂商通道前,必须确认厂商配额充足;否则可能直接返回配额不足错误。
分类关系速查
| 厂商 | 重要/服务类消息 | 普通/运营类消息 | 关键配置 |
|---|---|---|---|
| 小米 | 私信消息 | 公信消息 / 默认通道 | options.classification=1,third_party_channel.xiaomi.channel_id;私信消息可能还需要 mi_template_id 和 mi_template_param |
| 华为 | 服务与通讯类消息 | 资讯营销类消息 | options.classification=1,third_party_channel.huawei.importance,third_party_channel.huawei.category |
| 荣耀 | 服务与通讯类消息 | 资讯营销类消息 | options.classification=1,third_party_channel.honor.importance |
| OPPO | 私信 / 服务与通讯类消息 | 公信 / 运营类消息 | third_party_channel.oppo.channel_id,category,notify_level;必要时结合 skip_quota |
| vivo | 系统消息 | 运营消息 | options.classification=1 优先;third_party_channel.vivo.classification 优先级较低 |
| 魅族 | 按业务订阅与厂商规则限制 | 按业务订阅与厂商规则限制 | 关注业务速率、订阅标签数量和设备活跃限制 |
注意:上表用于帮助理解各厂商分类概念映射,实际取值和申请方式以厂商官方规则、极光厂商消息分类指南和您应用的审核结果为准。
API 字段优先级
options.classification
options.classification 是极光侧适配 Android 厂商消息分类的核心字段:
0:运营消息,默认值。1:系统消息。- 此字段优先级最高,会覆盖部分厂商子字段,例如
options.third_party_channel.vivo.classification、options.third_party_channel.honor.importance等。 - 极光不对开发者指定的消息类型做判断或校准,请确保传值与实际业务内容一致。
厂商子字段
不同厂商还需要配合传递子字段:
channel_id:用于小米、华为、OPPO 等厂商的通知栏消息分类或通知渠道标识。importance:用于华为、荣耀通知栏消息智能分类。category:用于华为、vivo、OPPO 等厂商的消息场景标识。notify_level:用于 OPPO 通知栏消息提醒等级,且使用时通常需要配合category。mi_template_id/mi_template_param:用于小米私信消息模板下发。push_mode:用于 vivo 正式推送或测试推送标识。skip_quota:目前仅对小米和 OPPO 有效,表示是否跳过极光侧配额判断及扣除。
配额与 QPS 管理
极光平台限制
非 VIP 应用支持厂商通道能力,但每次推送请求中可使用厂商通道的用户数量存在上限。超出厂商通道额度的消息请求,并不代表消息无法送达,极光会根据设备状态和可用策略切换至极光通道继续下发。
如业务对离线到达率、实时性或大规模推送有更高要求,建议评估 VIP 服务,以获得更稳定的厂商通道资源支持。
厂商系统限制
各厂商都有自身配额和 QPS 限制:
- 超过厂商配额时,极光会尽可能通过极光通道进行下发。
- 超过厂商 QPS 限制时,极光会按厂商限制慢速推送,尽量避免因 QPS 限制导致消息丢失。
- 厂商系统限制无法绕过,即使是 VIP 用户也需要遵守。
运营消息上限
运营消息通常会受到单设备每日接收数量限制。例如小米公信消息、OPPO 公信、vivo 运营消息、华为/荣耀资讯营销类消息,都需要按照厂商规则控制发送量。
建议:
- 在控制台开启厂商运营消息策略,并配置单用户每天的运营消息上限。
- 厂商运营消息上限应小于或等于极光的单设备下发推送条数限制。
- 对营销类消息使用标签、用户属性、分群、定时和频控,不要占用重要消息分类。
推荐配置流程
- 梳理业务消息类型,区分重要消息和运营消息。
- 按厂商要求申请重要消息分类、私信通道、自分类权益、channel 或模板。
- 客户端完成厂商通道 SDK 集成,并确保对应通知渠道、channel 或 category 已创建或审核通过。
- 控制台配置厂商参数、厂商运营消息策略和必要的频控规则。
- API 下发时设置
options.classification,并补充对应厂商字段。 - 根据业务目标选择
third_party_channel下发策略。 - 通过推送记录、统计 API、回执 API 和厂商配额查询持续监控。
API 示例
以下示例展示一条订单状态类重要通知的字段位置。实际厂商字段取值需以您的申请结果为准。
{
"platform": "android",
"audience": {
"registration_id": ["1104a89792xxxxxx"]
},
"notification": {
"android": {
"alert": "您的订单已发货",
"title": "订单状态更新",
"channel_id": "order_status"
}
},
"options": {
"classification": 1,
"third_party_channel": {
"xiaomi": {
"distribution": "secondary_push",
"channel_id": "your_xiaomi_private_channel_id",
"mi_template_id": "your_xiaomi_template_id",
"mi_template_param": "{\"order_no\":\"202607280001\"}"
},
"huawei": {
"distribution": "secondary_push",
"importance": "NORMAL",
"category": "TRAVEL"
},
"honor": {
"distribution": "secondary_push",
"importance": "NORMAL"
},
"oppo": {
"distribution": "secondary_push",
"channel_id": "your_oppo_private_channel_id",
"category": "ORDER",
"notify_level": 16
},
"vivo": {
"distribution": "secondary_push",
"classification": 1,
"category": "TODO"
}
}
}
}
常见误区
误区一:所有消息都设置为系统消息
系统消息、私信消息、服务与通讯类消息通常有明确场景边界。将营销、活动、内容推荐等消息设置为系统消息,可能导致厂商审核失败、通道受限或后续推送稳定性下降。
误区二:只传 classification,不申请厂商分类
classification 是极光侧适配厂商分类的重要字段,但部分厂商还要求提前申请 channel、自分类权益、模板或 category。未完成厂商侧配置时,仍可能推送失败或被归为普通消息。
误区三:把 skip_quota 理解为跳过厂商限制
skip_quota 仅表示是否跳过极光侧配额判断及扣除,目前仅对小米和 OPPO 有效。厂商本身的配额、QPS、单设备数量限制仍然存在。
误区四:强制 ospush 却不检查配额
ospush 表示强制走厂商通道。当指定厂商配额不足时,推送请求可能失败并返回厂商配额不足错误。对大规模推送,应先查询配额或使用更稳妥的下发策略。
误区五:测试消息未设置测试标识
部分厂商对测试消息有专门参数。例如 vivo 的 push_mode=1 表示测试推送;极光的 test_model 表示测试模式推送给测试设备。两者含义不同,需要按场景选择。
排查建议
当重要消息到达率异常或厂商返回失败时,建议按以下顺序排查:
- 检查厂商通道是否集成成功,厂商 token 是否正常获取。
- 检查消息内容是否符合系统消息、私信消息、服务类消息的场景要求。
- 检查
options.classification和各厂商子字段是否匹配。 - 检查厂商 channel、模板、自分类权益、category 是否已审核通过。
- 检查是否触发厂商配额、单设备每日数量限制或 QPS 限制。
- 检查
distribution、distribution_fcm、distribution_customize是否与消息类型匹配。 - 查看推送记录、统计 API、回执 API 和厂商后台配额数据。
推荐配置清单
发送前建议确认:
- 已区分重要消息和运营消息。
- 已完成厂商分类申请和客户端通知渠道配置。
- API 请求已设置准确的
options.classification。 - 各厂商
channel_id、importance、category、notify_level、模板字段与厂商规则一致。 - 运营消息已配置单用户频控和厂商运营消息策略。
- 大规模推送前已了解厂商配额和 QPS。
- 强制厂商通道前已确认配额充足。
- 已接入推送记录、统计和回执用于持续排查。