产品动态
公告
V2TIMOfflinePushInfo.vendorParams 的各字段说明和使用示例。特性分类 | 字段 | 类型 | 使用说明 | 备注 |
FCM 消息优先级 | fcmPriority | String | FCM 推送消息优先级设置: "normal":普通优先级,应用在前台运行时,普通优先级消息会被立即传递。当应用在后台运行时,消息传递可能会延迟。如果是对时间不太敏感的消息(例如新电子邮件通知、使界面保持同步或在后台同步应用数据),建议您选择普通传递优先级; "high":高优先级,即使设备处于低电耗模式,FCM 也会立即尝试传递高优先级消息。 高优先级消息适用于对时间敏感的用户可见内容。 | 无 |
vivo 通知类型 | vivoNotifyType | Integer | vivo 通知类型: 1:无。 2:响铃。 3:振动。 4:响铃和振动。 默认值:4。 | 无 |
OPPO 私信模板 | oppoTemplateId | String | 下发对应私信模板时必须携带,不支持自拟。 | 说明: 控制台也支持单独设置模板 ID, 主要用来支持 IM 场景下 (category = "IM") 推送消息生效模板 ID: 控制台设置模板 ID 后,会默认填充 V2TIMOfflinePushInfo 的 title 和 desc 字段内容给模板标题和内容,格式如下:
对应的申请模板示例: ![]() 以上,可以支持存量 IM 场景的离线消息适配私信模板功能,达到存量用户 IM 消息依然可通过信通道的目标。IM 类型消息也建议使用该方式使用私信模板。 |
| oppoTitleParam | JSON String | OPPO 标题模板填充参数: 例:私信模板 ID 标题模板为:欢迎来到$ {city} $ ,$ {city} $ 欢迎您。 此参数内容为:{“city”:“北京”} | |
| oppoContentParam | JSON String | OPPO 内容模板填充参数: 例:私信模板 ID 对应的内容模板为:欢迎$ {userName} $ 来到$ {city} $ 参数内容为:{“userName”:“汤姆”,“city”:“深圳市”} | |
推送模板 | pushTemplateId | String | 推送模板 ID。 模板在控制台创建并生成,客户端发送时指定。 | 无 |
| pushTemplateParam | JSON String | 推送模板填充参数。 例: 对应的模板是: {appName} 发来一条消息 您参与的会议,地址 {address} ,将于 {time} 后开始! 参数内容为: { "appName": "TIMPush", "address":" 1908 会议室 ", "time":" 3 分钟 " } | 无 |
鸿蒙自定义铃音 | harmonySound | String | 自定义消息通知铃声。 此处设置的铃声文件必须放在应用的 /resources/rawfile 路径下。例如设置为 alert.mp3,对应应用本地的 /resources/rawfile/alert.mp3 文件。支持的文件格式包括 MP3、WAV、MPEG 等,如果不设置,则用默认系统铃声。当请求不携带 soundDuration 字段时,建议铃声时长不超过 30 秒,若超过 30 秒则截断处理;当请求携带 soundDuration 字段时,详情请参见 soundDuration 字段说明。 | 无 |
| harmonySoundDuration | Integer | 自定义消息通知铃声时长。 需要配合 harmonySound 字段使用,只有当请求同时携带 harmonySound 字段,harmonySoundDuration 字段才会生效。仅支持数字,单位为秒,取值范围 [1, 60]。 harmonySound 字段传入的自定义消息通知铃声会播放至 harmonySoundDuration 字段值后停止,若自定义消息通知铃声对应的时长不足 harmonySoundDuration 字段值则会循环播放,在达到 harmonySoundDuration 字段值后停止。 | 无 |
V2TIMOfflinePushInfo v2TIMOfflinePushInfo = new V2TIMOfflinePushInfo();Map<String, Object> map = new HashMap<>();map.put("fcmPriority", "high");map.put("vivoNotifyType", 4);map.put("oppoTemplateId", "oppoid");Map<String, Object> oppoTitleMap = new HashMap<>();oppoTitleMap.put("title", "title");map.put("oppoTitleParam", new Gson().toJson(oppoTitleMap));Map<String, Object> oppoContentMap = new HashMap<>();oppoContentMap.put("desc", "desc");map.put("oppoContentParam", new Gson().toJson(oppoContentMap));map.put("pushTemplateId", "templateid");Map<String, Object> pushTemplateParamMap = new HashMap<>();pushTemplateParamMap.put("key1", "value1");map.put("pushTemplateParam", new Gson().toJson(pushTemplateParamMap));map.put("harmonySound", "ring.mp3");map.put("harmonySoundDuration", 10);String param = new Gson().toJson(map);v2TIMOfflinePushInfo.setVendorParams(param);
val map = mutableMapOf<String, Any>("fcmPriority" to "high","vivoNotifyType" to 4,"oppoTemplateId" to "oppoid","pushTemplateId" to "templateid","harmonySound" to "ring.mp3","harmonySoundDuration" to 10)val oppoTitleMap = mapOf("title" to "title")map["oppoTitleParam"] = Gson().toJson(oppoTitleMap)val oppoContentMap = mapOf("desc" to "desc")map["oppoContentParam"] = Gson().toJson(oppoContentMap)val pushTemplateMap = mapOf("key1" to "value1")map["pushTemplateParam"] = Gson().toJson(pushTemplateMap)val param = Gson().toJson(map)val v2TIMOfflinePushInfo = V2TIMOfflinePushInfo()v2TIMOfflinePushInfo.vendorParams = param
NSMutableDictionary *map = [@{@"fcmPriority": @"high",@"vivoNotifyType": @4,@"oppoTemplateId": @"oppoid",@"pushTemplateId": @"templateid",@"harmonySound": @"ring.mp3",@"harmonySoundDuration": @10} mutableCopy];NSDictionary *oppoTitleMap = @{@"title": @"title"};NSData *titleData = [NSJSONSerialization dataWithJSONObject:oppoTitleMap options:0 error:nil];NSString *oppoTitleJson = [[NSString alloc] initWithData:titleData encoding:NSUTF8StringEncoding];[map setObject:oppoTitleJson forKey:@"oppoTitleParam"];NSDictionary *oppoContentMap = @{@"desc": @"desc"};NSData *contentData = [NSJSONSerialization dataWithJSONObject:oppoContentMap options:0 error:nil];NSString *oppoContentJson = [[NSString alloc] initWithData:contentData encoding:NSUTF8StringEncoding];[map setObject:oppoContentJson forKey:@"oppoContentParam"];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","vivoNotifyType": 4,"oppoTemplateId": "oppoid","pushTemplateId": "templateid","harmonySound": "ring.mp3","harmonySoundDuration": 10]let oppoTitleMap: [String: String] = ["title": "title"]if let titleData = try? JSONSerialization.data(withJSONObject: oppoTitleMap),let oppoTitleJson = String(data: titleData, encoding: .utf8) {map["oppoTitleParam"] = oppoTitleJson}let oppoContentMap: [String: String] = ["desc": "desc"]if let contentData = try? JSONSerialization.data(withJSONObject: oppoContentMap),let oppoContentJson = String(data: contentData, encoding: .utf8) {map["oppoContentParam"] = oppoContentJson}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 << "\\"vivoNotifyType\\":4,";param << "\\"oppoTemplateId\\":\\"oppoid\\",";param << "\\"pushTemplateId\\":\\"templateid\\",";param << "\\"harmonySound\\":\\"ring.mp3\\",";param << "\\"harmonySoundDuration\\":10,";// 拼oppoTitleParam的json字符串std::string oppo_title_json = "{\\"title\\":\\"title\\"}";param << "\\"oppoTitleParam\\":\\"";for (const char c : oppo_title_json) {// 转义嵌套json里的双引号if (c == '"') param << '\\\\';param << c;}param << "\\",";// 拼oppoContentParam的json字符串std::string oppo_content_json = "{\\"desc\\":\\"desc\\"}";param << "\\"oppoContentParam\\":\\"";for (const char c : oppo_content_json) {if (c == '"') param << '\\\\';param << c;}param << "\\",";// 拼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();
文档反馈