小米推送模板接入指南更新时间:2026-06-02 11:03:01
为了改善小米终端用户的通知体验,营造良好可持续的推送生态,小米推送对现有消息下发能力进行了升级,新增模板下发能力。
一、模板功能简介
小米推送规定所有私信消息需接入模板,接入模板的消息具备如下特点:
- 所有私信channel需携带channel_id和模板id下发;
- 下发时仅传送消息变量{$keywords$}至MiPush侧进行消息拼装。
二、模板接入指南
1. 启用小米推送服务,请参考《推送服务启用指南》
2. MiPush私信消息模板申请及接入方法
2.1 官方模板
使用开发者账号登录小米推送运营平台,选择您的应用,进入“应用信息”管理界面。在左侧导航栏中找到“消息分类管理”,点击展开后选择“模板管理-官方模板”,无需申请,即可使用相应模板id进行下发。
注:官方模板由MiPush实时更新维护。

2.2 自定义模板申请流程
若上述官方模板无法满足您的需求,可以申请自定义模板:
在左侧导航栏中找到“消息分类管理”,点击展开后选择“模板管理-自定义模板”。在模板管理页面右上角,点击“新建模板”按钮开始创建自定义模板。

在“新建模板”页面,完成信息填写并提交审核。
- 基础配置:
- 所属消息分类:请选择模板所属消息分类,如订单及物流;
- 模板名称:请根据通知场景简要命名,避免数字、特殊符号等难以理解的名称;
- 模板描述:对模板用途、适用场景或内容特点的补充说明字段。若模板名称已清晰表达含义,可选择不填写;如需填写,建议简洁准确,突出核心特征和适用场景。
- 模板内容配置:
- 标题结构配置:用于定义消息标题的展示格式,支持固定文本与变量组合,需确保结构清晰、语意完整。
- 内容结构配置(副标题):用于定义消息正文的展示格式,支持固定文本与变量组合,需注意逻辑完整性和可读性。
- 变量内容示例:展示模板中各变量的具体填充效果,需为每个变量提供真实合理的示例内容,体现模板实际应用场景。
- 注意:
- 主标题&副标题的变量需要按照 {$变量名$}的格式,需通过点击「插入变量」功能生成规范变量符号;
- 主标题首位不可以变量开头;
- 变量名不能重复;
- 每个模板最多支持9个变量。

提交申请后,您可以在“模板管理”页面查看已提交的模板信息,包括模板id、模板名称、消息分类、适用通知类别、标题结构、内容结构、状态等信息。

3.服务端接入
1、服务端API
基于现有MiPush服务端API进行消息推送(服务器API地址以及参数 | 小米澎湃OS开发者平台),依托扩展extra参数的方式完成消息模板接入适配。
- 扩展extra参数说明
| key类型 | key参数名 | 说明 |
| string | extra.channel_id | 消息模板绑定的channel id |
| string | extra.template_id | 消息模板id |
| string | extra.template_param | 消息模板参数,值为消息模板参数的JSON字符串。 1.需要与对应模板预配置的参数格式保持一致; 2.参数个数必须与对应模板预配置的参数数量保持一致; 3.参数值要求: i.长度 1~128 个字符; ii.不能为纯空格; iii.不支持 emoji 及特殊符号(Unicode Other Symbol 类,即 \p{So}); iv.不支持未分配的 Unicode 字符。 |
- 发送方式:支持使用Michannel推送单条消息或推送多条消息
- 推送单条消息
| 接口版本(v2/v3) | 接口定义 | 接口说明 |
| v2 | /v2/message/regid | 向某个regid或一组regid列表推送某条消息 |
| v2 | /v2/message/alias | 向某个alias或一组alias列表推送某条消息 |
| v2 | /v2/message/user_account | 向某个account或一组account列表推送某条消息 |
| v2 | /v2/message/topic | 向某个topic推送单条消息 |
| v2 | /v2/message/multi_topic | 向多个topic推送单条消息 |
| v2 | /v2/message/all | 向所有设备推送某条消息 |
| v3 | v3/message/regid | 向某个regid或一组regid列表推送某条消息(这些regId可以属于不同的包名) |
| v3 | /v3/message/alias | 向某个alias或一组alias列表推送某条消息(这些alias可以属于不同的包名) |
| v3 | /v3/message/topic | 向某个topic推送某条消息(可以指定一个或多个包名) |
| v3 | /v3/message/multi_topic | 向多个topic推送单条消息(可以指定一个或多个包名) |
| v3 | /v3/message/all | 向所有设备推送某条消息(可以指定一个或多个包名) |
- 推送多条消息
| 接口版本(v2) | 接口定义 | 接口说明 |
| v2 | /v2/multi_messages/regids | 针对不同的regid推送不同的消息 |
| v2 | /v2/multi_messages/aliases | 针对不同的alias推送不同的消息 |
| v2 | /v2/multi_messages/user_accounts | 针对不同的userAccount推送不同的消息 |
示例:
curl --location 'https://api.xmpush.xiaomi.com/v3/message/regid' \
--header 'Authorization: key=xxxxxxxxxxxxxxx' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'restricted_package_name=com.xiaomi.mipushdemo' \
--data-urlencode 'title={$app_name$}订单支付成功' \
--data-urlencode 'description=尊敬的用户,您的订单{$order_no$}已支付成功,金额:{$order_amount$}元,预计{$delivery_time$}送达。' \
--data-urlencode 'registration_id=hZ6jiFfetuOt6vjK8ZTS1dEauxbDek2A76GqsZJapEUlsFpIDln+5WYP2v929Ltj' \
--data-urlencode 'extra.intent_uri=intent:#Intent;component=com.xiaomi.mipushdemo/com.xiaomi.mipushdemo.TestActivity;end' \
--data-urlencode 'extra.callback=http://10.192.33.174:8080/callback/test' \
--data-urlencode 'extra.callback.type=129' \
--data-urlencode 'extra.channel_id=130' \
--data-urlencode 'extra.template_id=1001' \
--data-urlencode 'extra.template_param={"app_name":"小米商城","order_no":"XM202601130001","order_amount":"11.00","delivery_time":"2026-01-15 18:00"}'
2、服务端SDK
基于现有MiPUSH服务端SDK进行消息推送(服务端Java SDK文档 | 小米澎湃OS开发者平台),依托扩展extra(String key, String value) 的方式完成消息模板接入适配。
- 扩展extra参数key说明
| key类型 | key参数名 | 说明 |
| string | extra.channel_id | 消息模板绑定的channel id |
| string | extra.template_id | 消息模板id |
| string | extra.template_param | 消息模板参数,值为消息模板参数的JSON字符串。 1.需要与对应模板预配置的参数格式保持一致; 2.参数个数必须与对应模板预配置的参数数量保持一致; 3.参数值要求: i.长度 1~128 个字符; ii.不能为纯空格; iii.不支持 emoji 及特殊符号(Unicode Other Symbol 类,即 \p{So}); iv.不支持未分配的 Unicode 字符。 |
- 发送方式支持范围:
| 分类 | 方法定义 | 方法说明 |
| RegID消息 | send(Message message, String regid, int retries) | 根据regid, 发送消息到指定设备上, retries代表发送失败后重试的次数。 |
| RegID消息 | send(Message message, List<String> regids, int retries) | 根据regids, 发送消息到指定的一组设备上, regids的个数不得超过1000个。 |
| RegID消息 | sendHybridMessageByRegId(message, regids, retries) | 给快应用发送regid消息。如果应用类型是快应用,须调用此方法。 |
| Alias消息 | sendToAlias(Message message, String alias, int retries) | 根据alias, 发送消息到指定设备上, alias不允许全是空白字符, 不能包含逗号, 长度小于128, 中英文均以一个计算 |
| Alias消息 | sendToAlias(Message message, List<String> aliasList, int retries) | 根据aliasList, 发送消息到指定的一组设备上, 元素的个数不得超过1000个 |
| UserAccount消息 | sendToUserAccount(Message message, String userAccount, int retries) | 根据account, 发送消息到指定account上, account不允许全是空白字符, 不能包含逗号, 长度小于128, 中英文均以一个计算 |
| UserAccount消息 | sendToUserAccount(Message message, List<String> accountList, int retries) | 根据accountList, 发送消息到指定的一组设备上, 元素的个数不得超过1000个 |
| Topic消息 | broadcast(Message message, String topic, int retries) | 根据topic, 发送消息到指定一组设备上, topic不允许全是空白字符, 长度小于128, 中英文均以一个计算 |
| Topic消息 | broadcastAll(Message message, int retries) | 向所有设备发送消息 |
| Topic消息 | multiTopicBroadcast(Message message, List<String> topics, topic_op, int retries) | 向多个topic广播消息, 支持topic间的交集、并集或差集(如果只有一个topic请用单topic版本) |
| Topic消息 | broadcastHybridAll(message, retries) | 给快应用发送全量消息。如果应用类型是快应用,须调用此方法 |
示例:
public void testTemplateMessage() throws Exception {
Map<String, String> extra = new HashMap<>();
extra.put("channel_id", "113635");
extra.put("template_id", "1001");
extra.put("template_param", "{\"keywords1\":\"1111\",\"keywords2\":\"参数2\"}");
Message message = new Message.Builder()
.title("你有一条新消息")
.description("尊敬的用户,您的订单{$keywords1$}已支付成功,金额:{$keywords2$}元")
.restrictedPackageName("APP_PACKAGE_NAME")
.extra(extra)
.build();
Constants.useOfficial();
Sender sender = new Sender(APP_SECRECT);
Result result = sender.send(message, REGID, 3); //根据regID,发送消息到指定设备上
System.out.println("Server response: "+"MessageId: " + result.getMessageId()
+ " ErrorCode: " + result.getErrorCode().getValue()
+ " Reason: " + result.getReason());
}
3、服务端错误码参考
以下为消息模板接入错误码说明,其余请参考服务端错误码参考 | 小米澎湃OS开发者平台
示例-错误响应报文:
{
"result": "error",
"reason": "Template parameter value must be String type",
"trace_id": "Xxo00803769689306678rp",
"code": 10041,
"data": {
"day_acked": "180",
"day_quota": "10000"
},
"description": "title或者description不合规范"
}上一篇:服务器API地址以及参数
下一篇:VoIP Service Kit推送服务接入指南
文档内容是否有帮助?
有帮助
无帮助