对全网设备推送相同消息,消息通过模板创建。
当推送目标为移动分析人群或自定义标签人群时,不支持定时和循环推送。
在调用本接口之前,确保已完成以下操作:
请求参数
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
classification | String | 否 | 1 | 用于传递 vivo 推送通道的消息类型:
不填则默认为 1。 |
taskName | String | 是 | 群发测试任务 | 推送任务名称。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空间 |
deliveryType | Long | 是 | 1 | 目标 ID 类型,数值选择:
|
msgkey | String | 是 | 1578807462788 | 业务方消息 ID,用户自定义,不可重复。 |
expiredSeconds | Long | 是 | 300 | 消息有效期,单位为秒。 |
templateName | String | 是 | 群发模板 | 模板名称,在控制台创建模板。 |
templateKeyValue | String | 否 | {“content”:”公告内容”} | 模板参数,为 Map 格式,和 |
pushStatus | Long | 否 | 0 | 群发时,推送登录状态:
|
bindPeriod | Integer | 否 | 登录时长,当
说明
| |
unBindPeriod | Long | 否 | 退出登录时长,当
| |
androidChannel | Integer | 否 | 安卓消息通道:
| |
strategyType | int | 否 | 1 | 推送策略类型:
不填则默认为 0。 |
StrategyContent | String | 否 | {\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”} | 推送策略详情(JSON 字符串)。 |
transparentMessagePayload | Map<String, JSONObject> | 否 | - | 厂商透传消息体。
透传消息体的格式如下: |
transparentMessageUrgency | String | 否 | - | 厂商透传消息优先级(transparentMessagePayload 有值时有效)。 目前仅华为、荣耀以及鸿蒙支持,有 HIGH/NORMAL 可选。 针对华为、荣耀而言:
针对鸿蒙而言:
|
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //华为 FINANCE 财务类型消息 "vivo": "1" //vivo IM 类型消息 } | 用于传递厂商消息分类,详情请参见 厂商消息分类。 |
notifyLevel | Map | 否 | notifyLevel: {"oppo":"2"//OPPO通知栏+锁屏} | 厂商消息提醒等级,如 OPPO 消息等级如下所示:
|
miChannelId | String | 否 | "123321" | 小米厂商推送渠道的 channelId |
timeMode | Integer | 否 | 0 | 时间模式:
|
bindStartTime | Long | 否 | 1746720000000 | 绑定开始时间戳 |
bindEndTime | Long | 否 | 1746806219999 | 绑定结束时间戳 |
unBindStartTime | Long | 否 | 1746720000000 | 解绑开始时间戳 |
unBindEndTime | Long | 否 | 1746806219999 | 解绑结束时间戳 |
StrategyContent 字段说明
JSON 格式转化为 String 传值。
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
fixedTime | long | 否 | 1630303126000 | 定时推送时间戳(单位:毫秒,精确到秒)。推送策略类型为定时( |
startTime | long | 否 | 1640966400000 | 循环周期开始时间戳(单位:毫秒,精确到天)。推送策略类型为循环( |
endTime | long | 否 | 1672416000000 | 循环周期结束时间戳(单位:毫秒,精确到天),循环结束时间不得超过当天后的 180 天。推送策略类型为循环( |
circleType | int | 否 | 3 | 循环类型:
推送策略类型为循环( |
circleValue | int[] | 否 | [1,3] | 循环值:
推送策略类型为循环( |
time | String | 否 | 09:45:11 | 循环推送时间(时分秒,格式为 HH:mm:ss) 。推送策略类型为循环( |
未执行的定时或循环推送任务总数上限默认为 100 条。
循环周期为开始时间的 0 点到结束时间的 24 点。
循环开始时间和结束时间均不可早于当天 0 点,且结束时间不得早于开始时间。
返回参数
参数名称 | 类型 | 示例 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 请求 ID |
ResultCode | String | OK | 请求结果码 |
ResultMessage | String | param is invalid | 请求错误描述 |
PushResult | JSON | 请求结果 | |
Success | boolean | true | 请求状态。 |
ResultMsg | String | param is invalid | 请求错误内容。 |
Data | String | 903bf653c1b5442b9ba07684767bf9c2 | 定时推送任务 ID。 |
代码示例
请确保您的 AccessKey 拥有 AliyunMPAASFullAccess 权限,详情请参考 对 RAM 账号进行应用级别的访问控制。
Java 代码示例
单击此处 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
import com.alibaba.fastjson.JSON;
import com.aliyun.mpaas20201028.Client;
import com.aliyun.mpaas20201028.models.PushBroadcastRequest;
import com.aliyun.mpaas20201028.models.PushBroadcastResponse;
import com.aliyun.teaopenapi.models.Config;
import java.text.SimpleDateFormat;
public static void main(String[] args) throws Exception {
// 阿里云账号AccessKey拥有所有API的访问权限,建议您使用RAM用户进行API访问或日常运维。
// 强烈建议不要把AccessKey ID和AccessKey Secret保存到工程代码里,否则可能导致AccessKey泄露,威胁您账号下所有资源的安全。
// 本示例以将AccessKey ID和AccessKey Secret保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里。
// 建议先完成环境变量配置
Config config = new Config();
// 必填,您的 AccessKey ID
config.setAccessKeyId(System.getenv("MPAAS_AK_ENV"));
// 必填,您的 AccessKey Secret
config.setAccessKeySecret(System.getenv("MPAAS_SK_ENV"));
// mPaaS 的 REGION_ID 和 Endpoint,以杭州非金为例
config.setRegionId("cn-hangzhou");
config.setEndpoint("mpaas.cn-hangzhou.aliyuncs.com");
Client client = new Client(config);
PushBroadcastRequest request = new PushBroadcastRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTenantId("xxx");
request.setTemplateName("测试模版");
request.setExpiredSeconds(180L);
request.setTaskName("群发任务");
request.setAndroidChannel(2);
// 1-安卓系统,2、ios系统,7-鸿蒙系统
request.setDeliveryType(1L);
// 0-固定天数,1-时间范围
// request.setTimeMode(1);
// 0-查询绑定设备,1-查询绑定/解绑设备信息,2-查询解绑设备信息
request.setPushStatus(0L);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long startTime = dateFormat.parse("2024-05-20 15:59:48").getTime();
long endTime = dateFormat.parse("2024-05-20 15:59:48").getTime();
request.setBindStartTime(startTime);
request.setBindEndTime(endTime);
request.setMsgkey(String.valueOf(System.currentTimeMillis()));
System.out.println("request==>"+JSON.toJSONString(request));
PushBroadcastResponse acsResponse = client.pushBroadcast(request);
System.out.println("response==>"+JSON.toJSONString(acsResponse));
}Python 代码示例
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushBroadcastRequest
import json
import time
// 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
// 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
// 建议先完成环境变量配置
# Initialize AcsClient instance
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
client = AcsClient(
accessKeyId,
accessKeySecret,
"cn-hangzhou"
);
# Initialize a request and set parameters
request = PushBroadcastRequest.PushBroadcastRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211720")
request.set_WorkspaceId("test")
request.set_TemplateName("broadcastTemplate")
templatekv = {"content":"这个一个公告"}
request.set_TemplateKeyValue(json.dumps(templatekv))
request.set_DeliveryType(1)
request.set_TaskName("python测试群发任务")
request.set_ExpiredSeconds(600)
request.set_Msgkey(str(time.time()))
# Print response
response = client.do_action_with_exception(request)
print responseNode.js 代码示例
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushBroadcastRequest } = sdk;
// 创建客户端
// 阿里云账号 AccessKey 拥有所有 API 的访问权限,风险很高。强烈建议您创建并使用 RAM 用户进行 API 访问或日常运维,请登录 RAM 控制台创建 RAM 用户
// 此处以把 AccessKey 和 AccessKeySecret 保存在环境变量为例说明。您也可以根据业务需要,保存到配置文件里
// 强烈建议不要把 AccessKey 和 AccessKeySecret 保存到代码里,会存在密钥泄漏风险
// 建议先完成环境变量配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
const client = new Client({
accessKeyId,
accessKeySecret,
endpoint: 'mpaas.cn-hangzhou.aliyuncs.com',
apiVersion: '2019-08-21'
});
// 初始化 request
const request = new PushBroadcastRequest();
request.appId = "ONEX570DA89211720";
request.workspaceId = "test";
request.templateName= "broadcastTemplate";
const templatekv = {
content: '这是公告哦',
};
request.templateKeyValue = JSON.stringify(templatekv);
request.deliveryType = 1;
request.taskName = "Node测试任务";
request.expiredSeconds=600;
const extendedParam = {
test: '自定义扩展参数'
};
request.extendedParams = JSON.stringify(extendedParam);
request.msgkey = String(new Date().valueOf())
// 调用 API
try {
client.pushBroadcast(request).then(res => {
console.log('SUCCESS', res);
}).catch(e => {
console.log('FAIL', e);
});
} catch(e) {
console.log('ERROR', e);
}PHP 代码示例
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\MPaaS\MPaaS;
AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')
->regionId('cn-hangzhou')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->broadcastPush();
} catch (\Exception $e) {
}
}
public function broadcastPush(){
$request = MPaaS::v20190821()->pushBroadcast();
$result = $request->host("mpaas.cn-hangzhou.aliyuncs.com")
// 是否开启 debug 模式
->debug(true)
->withAppId("ONEX570DA89211720")
->withWorkspaceId("test")
->withTemplateName("broadcastTemplate")
->withTemplateKeyValue(
json_encode(["content" => "这是一个公告"])
)
->withDeliveryType(1)
->withTaskName("PHP 测试群发任务")
->withExpiredSeconds(600)
->withMsgkey("". time())
->request();
}
}