tencent cloud

即时通信 IM

离线推送消息属性设置

下载
聚焦模式
字号
最后更新时间: 2026-09-21 15:55:12
当 App 进入后台或被杀进程后,Chat 消息将通过厂商推送通道(FCM、APNs)下发至终端设备。通过 V2TIMOfflinePushInfo 结构体,您可以统一设置通知栏标题、正文、透传扩展字段,并针对不同厂商通道进行精细化的推送行为控制(如优先级、通知类型、私信模板、推送模板、自定义铃音等)。
本文档介绍 V2TIMOfflinePushInfo 的通用属性与各厂商专属配置字段(vendorParams)的详细说明与使用示例。

各平台 API 参考

平台
API 文档
Android
iOS
C++
C

通用属性说明

属性
类型
含义
是否在通知栏可见
title
String
离线推送通知栏标题。
可见
desc
String
离线推送通知栏正文(自定义消息必填)。
可见
ext
byte[]
透传扩展字段,点击推送后 APP 内读取。
不可见
disablePush
boolean
是否关闭本条离线推送。
不可见(true 则整条通知都不出现)
vendorParams
String(JSON)
各厂商扩展参数(fcmPriority 等)。
不可见(但影响展示行为)

vendorParams 字段说明

V2TIMOfflinePushInfo.vendorParams 以 JSON 字符串的形式,透传各厂商推送通道的专属高级配置。您可以按需组合以下字段,SDK 会根据最终命中的推送通道自动取用对应参数。

字段列表

特性分类
字段
类型
使用说明
FCM 消息优先级
fcmPriority
String
FCM 推送消息优先级设置:
"normal":普通优先级,应用在前台运行时,普通优先级消息会被立即传递。当应用在后台运行时,消息传递可能会延迟。如果是对时间不太敏感的消息(例如新电子邮件通知、使界面保持同步或在后台同步应用数据),建议您选择普通传递优先级;
"high":高优先级,即使设备处于低电耗模式,FCM 也会立即尝试传递高优先级消息。 高优先级消息适用于对时间敏感的用户可见内容。
推送模板
pushTemplateId
String
推送模板 ID。
模板在控制台创建并生成,客户端发送时指定。
pushTemplateParam
JSON String
推送模板填充参数。
例:
对应的模板是:
{appName} 发来一条消息
您参与的会议,地址 {address} ,将于 {time} 后开始!
参数内容为:
{
"appName": " TIMPush ",
"address":" 1908 会议室 ",
"time":" 3 分钟 "
}

vendorParams 用法示例

Android
iOS
C++
Java
Kotlin
V2TIMOfflinePushInfo v2TIMOfflinePushInfo = new V2TIMOfflinePushInfo();
Map<String, Object> map = new HashMap<>();
map.put("fcmPriority", "high");

map.put("pushTemplateId", "templateid");
Map<String, Object> pushTemplateParamMap = new HashMap<>();
pushTemplateParamMap.put("key1", "value1");
map.put("pushTemplateParam", new Gson().toJson(pushTemplateParamMap));

String param = new Gson().toJson(map);
v2TIMOfflinePushInfo.setVendorParams(param);
val map = mutableMapOf<String, Any>(
"fcmPriority" to "high",
"pushTemplateId" to "templateid",
)

val pushTemplateMap = mapOf("key1" to "value1")
map["pushTemplateParam"] = Gson().toJson(pushTemplateMap)

val param = Gson().toJson(map)
val v2TIMOfflinePushInfo = V2TIMOfflinePushInfo()
v2TIMOfflinePushInfo.vendorParams = param
OC
Swift
NSMutableDictionary *map = [@{
@"fcmPriority": @"high",
@"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];

V2TIMOfflinePushInfo *v2TIMOfflinePushInfo = [[V2TIMOfflinePushInfo alloc] init];
v2TIMOfflinePushInfo.vendorParams = params;
var map: [String: Any] = [
"fcmPriority": "high",
"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)!

let v2TIMOfflinePushInfo = V2TIMOfflinePushInfo()
v2TIMOfflinePushInfo.vendorParams = params;
#include <sstream>
#include <string>

V2TIMOfflinePushInfo offline_push_info;
//std::string param = R"({"fcmPriority":"high","vivoNotifyType":4})";

std::ostringstream param;
// 拼主结构体
param << "{";
param << "\\"fcmPriority\\":\\"high\\",";
param << "\\"pushTemplateId\\":\\"templateid\\",";

// 拼pushTemplateParam的json字符串
std::string push_template_json = "{\\"key1\\":\\"value1\\"}";
param << "\\"pushTemplateParam\\":\\"";
for (const char c : push_template_json) {
if (c == '"') param << '\\\\';
param << c;
}
param << "\\",";
offline_push_info.vendorParams = param.str();
注意:
Chat SDK 8.7 及以上版本支持。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈