模板推送是指开发者预先在推送平台创建含固定框架与可替换变量的消息模板,推送时仅传入变量值,由平台自动填充生成最终消息并下发,兼顾标准化、效率与个性化。一次创建可实现多次批量推送,大幅降低开发与运营成本。适用场景包括:
系统通知:订单状态、物流更新、账户变动、验证码提醒。
运营营销:活动促销、会员福利、新品上线、优惠券发放。
用户唤醒:沉默用户召回、未读消息提醒、功能升级通知。
行业专属:金融交易提醒、电商物流通知、OTA 行程变更、IoT 设备告警等。
创建推送模板
1. 前往 控制台 > 推送服务 Push > 推送设置,点击创建推送模板。

2. 填写基础信息:包括模板名称和模板描述。
3. 填写推送信息:包括推送标题和推送内容。可选择添加预设变量(仅适用于 Chat 消息场景),纯 Push 场景可以点击新增自定义变量,页面左侧可查看推送预览。
4. (可选)多语言设置:打开多语言开关后,支持手动添加 / 批量导入。
5. 点击保存推送模板。

应用推送模板
使用推送模板,有两种方式:
1. 控制台使用模板
1.1 在 推送设置 页面,选择对应模板后点击创建推送。


1.2 选定推送模板并查看推送预览后,设置推送策略、推送目标、发送时机等,最后点击推送消息。

1.3 查看推送消息预览,确认无误后点击确认推送。


2. 客户端使用模板
特性分类 | 字段 | 类型 | 使用说明 | 备注 |
推送模板 | pushTemplateId | String | 推送模板 ID。 模板在控制台创建并生成,客户端发送时指定。 | 无 |
| pushTemplateParam | JSON String | 推送模板填充参数。 例: 对应的模板是: {appName} 发来一条消息您参与的会议,地址 {address} ,将于 {time} 后开始!参数内容为:{"appName": " TIMPush ","address":" 1908 会议室 ","time":" 3 分钟 "} | 无 |
用法示例
Gson gson = new Gson();Map<String, Object> map = new HashMap<>();map.put("pushTemplateId", "templateid");Map<String, Object> pushTemplateParamMap = new HashMap<>();pushTemplateParamMap.put("key1", "value1");map.put("pushTemplateParam", gson.toJson(pushTemplateParamMap));// 构造 offlinePushInfoV2TIMOfflinePushInfo offlinePushInfo = new V2TIMOfflinePushInfo();offlinePushInfo.setVendorParams(gson.toJson(map));// 发送消息,传入 offlinePushInfoV2TIMManager.getMessageManager().sendMessage(message, receiver, groupID, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, offlinePushInfo, callback);
val gson = Gson()val map = mutableMapOf<String, Any>("pushTemplateId" to "templateid")val pushTemplateParamMap = mapOf("key1" to "value1")map["pushTemplateParam"] = gson.toJson(pushTemplateParamMap)// 构造 offlinePushInfoval offlinePushInfo = V2TIMOfflinePushInfo()offlinePushInfo.setVendorParams(gson.toJson(map))// 发送消息,传入 offlinePushInfoV2TIMManager.getMessageManager().sendMessage(message, receiver, groupID, V2TIMMessage.V2TIM_PRIORITY_DEFAULT, false, offlinePushInfo, callback)
NSMutableDictionary *map = [@{@"pushTemplateId": @"templateid"} mutableCopy];NSDictionary *pushTemplateParamMap = @{@"key1": @"value1"};NSData *pushTemplateData = [NSJSONSerialization dataWithJSONObject:pushTemplateParamMap options:0 error:nil];NSString *pushTemplateJson = [[NSString alloc] initWithData:pushTemplateData encoding:NSUTF8StringEncoding];[map setObject:pushTemplateJson forKey:@"pushTemplateParam"];NSData *paramsData = [NSJSONSerialization dataWithJSONObject:map options:0 error:nil];NSString *params = [[NSString alloc] initWithData:paramsData encoding:NSUTF8StringEncoding];// 构造 offlinePushInfoV2TIMOfflinePushInfo *offlinePushInfo = [[V2TIMOfflinePushInfo alloc] init];offlinePushInfo.vendorParams = params;// 发送消息,传入 offlinePushInfo[[V2TIMManager sharedInstance] sendMessage:messagereceiver:receivergroupID:groupIDpriority:V2TIM_PRIORITY_DEFAULTonlineUserOnly:NOofflinePushInfo:offlinePushInfoprogress:nilsucc:succfail:fail];
var map: [String: Any] = ["pushTemplateId": "templateid",]let pushTemplateParamMap: [String: String] = ["key1": "value1"]if let pushTemplateData = try? JSONSerialization.data(withJSONObject: pushTemplateParamMap),let pushTemplateJson = String(data: pushTemplateData, encoding: .utf8) {map["pushTemplateParam"] = pushTemplateJson}let paramsData = try! JSONSerialization.data(withJSONObject: map)let params = String(data: paramsData, encoding: .utf8)!// 构造 offlinePushInfolet offlinePushInfo = V2TIMOfflinePushInfo()offlinePushInfo.vendorParams = params// 发送消息,传入 offlinePushInfoV2TIMManager.sharedInstance().sendMessage(message: message,receiver: receiver,groupID: groupID,priority: .V2TIM_PRIORITY_DEFAULT,onlineUserOnly: false,offlinePushInfo: offlinePushInfo,progress: nil,succ: succ,fail: fail)
#include <sstream>#include <string>std::ostringstream params;params << "{";params << "\\"pushTemplateId\\":\\"templateid\\",";std::string pushTemplateParam = "{\\"key1\\":\\"value1\\"}";params << "\\"pushTemplateParam\\":\\"";for (const char c : pushTemplateParam) {if (c == '"') {params << '\\\\';}params << c;}params << "\\"}";std::string vendorParams = params.str();// 构造 offlinePushInfoV2TIMOfflinePushInfo offlinePushInfo;offlinePushInfo.vendorParams = V2TIMString(vendorParams.c_str(), vendorParams.size());// 发送消息,传入 offlinePushInfoV2TIMManager::GetInstance()->GetMessageManager()->SendMessage(message, receiver, groupID, V2TIM_PRIORITY_DEFAULT, false, offlinePushInfo, callback);