更新时间:2021-01-08 19:16
消息推送提供以下 OpenAPI 接口以实现用户服务端调用消息推送的极简推送、模板推送、批量推送、群发推送功能,具体描述见下表:
API | 描述 |
---|---|
极简推送 | 对一个目标 ID 推送一条消息。 |
模板推送 | 对一个目标 ID 推送一条消息,消息通过模板创建。 |
批量推送 | 对多个目标 ID 推送不同消息。基于模板,为各推送 ID 配置不同的模板占位符内容,从而实现消息的个性化推送。 |
群发推送 | 对全网设备推送相同消息,消息通过模板进行创建。 |
消息推送支持 Java、Python、Node.js、PHP 四种语言版本。针对不同的语言版本,在调用上述推送方式前,需要进行相应的推送准备。
下面分别对各个语言版本的 SDK 准备工作进行说明。
在调用上述四种推送方式前,需引入 Maven 配置,在主控 pom 中引入如下依赖:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-mpaas</artifactId>
<version>1.0.0.0</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<optional>true</optional>
<version>[4.3.2,5.0.0)</version>
</dependency>
执行以下命令添加 SDK 相关依赖。
## 阿里云SDK
pip install aliyun-python-sdk-core
## mpaas SDK
pip install aliyun-python-sdk-mpaas
执行以下命令添加 SDK 相关依赖。
npm i @alicloud/mpaas20190821
执行以下命令添加 SDK 相关依赖。
composer require alibabacloud/sdk
对一个推送 ID 推送一条消息。
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
---|---|---|---|---|
taskName | String | 是 | simpleTest | 推送任务名称。 |
title | String | 是 | 测试 | 消息的标题。 |
content | String | 是 | 测试 | 消息的正文。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空间 |
deliveryType | Long | 是 | 3 | 目标 ID 类型,数值选择如下:
|
targetMsgkey | String | 是 | {“user1024”:”1578807462788”} | 推送目标,为 map 形式:
|
expiredSeconds | Long | 是 | 300 | 消息有效期,单位为秒。 |
extendedParams | String | 否 | {“key1”:”value1”} | 扩展参数,为 map 形式。 |
pushAction | Long | 否 | 0 | 点击消息后的跳转方式:
|
uri | String | 否 | http://www | 点击消息后的跳转地址。 |
silent | Long | 否 | 1 | 是否静默:
|
点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 创建DefaultAcsClient实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域ID
"******", // RAM账号的AccessKey ID
"*****"); // RAM账号AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);
// Create an API request and set parameters
PushSimpleRequest request = new PushSimpleRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTaskName("测试任务");
request.setTitle("测试");
request.setContent("测试");
request.setDeliveryType(3L);
Map<String,String> extendedParam = new HashMap<String, String>();
extendedParam.put("key1","value1");
request.setExtendedParams(JSON.toJSONString(extendedParam));
request.setExpiredSeconds(300L);
Map<String,String> target = new HashMap<String, String>();
String msgKey = String.valueOf(System.currentTimeMillis());
target.put("user1024",msgKey);
request.setTargetMsgkey(JSON.toJSONString(target));
// Initiate the request and handle the response or exceptions
PushSimpleResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushSimpleRequest
import json
# Initialize AcsClient instance
client = AcsClient(
"***",
"***",
"cn-hangzhou"
);
# Initialize a request and set parameters
request = PushSimpleRequest.PushSimpleRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211721")
request.set_WorkspaceId("test")
request.set_Title( "python测试")
request.set_Content( "测试2")
request.set_DeliveryType(3)
request.set_TaskName("python测试任务")
request.set_ExpiredSeconds(600)
target = {"user1024":str(time.time())}
request.set_TargetMsgkey(json.dumps(target))
# Print response
response = client.do_action_with_exception(request)
print response
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushSimpleRequest } = sdk;
// 创建客户端
const client = new Client({
accessKeyId: '****',
accessKeySecret: '*****',
endpoint: 'mpaas.cn-hangzhou.aliyuncs.com',
apiVersion: '2019-08-21'
});
// 初始化 request
const request = new PushSimpleRequest();
request.appId = "ONEX570DA89211721";
request.workspaceId = "test";
request.title = "Node测试";
request.content = "测试";
request.deliveryType = 3;
request.taskName = "Node测试任务";
request.expiredSeconds=600;
const extendedParam = {
test: '自定义扩展参数'
};
request.extendedParams = JSON.stringify(extendedParam);
// value 为业务方消息id,请保持唯一
const target = {
"userid1024": String(new Date().valueOf())
};
request.targetMsgkey = JSON.stringify(target);
// 调用 API
try {
client.pushSimple(request).then(res => {
console.log('SUCCESS', res);
}).catch(e => {
console.log('FAIL', e);
});
} catch(e) {
console.log('ERROR', e);
}
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\MPaaS\MPaaS;
AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')
->regionId('cn-hangzhou')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->simplePush();
} catch (\Exception $e) {
}
}
public function simplePush() {
$request = MPaaS::v20190821()->pushSimple();
$result = $request->withAppId("ONEX570DA89211721")
->withWorkspaceId("test")
->withTitle("PHP 测试")
->withContent("测试3")
->withDeliveryType(3)
->withTaskName("PHP 测试任务")
->withExpiredSeconds(600)
->withTargetMsgkey(
json_encode(["userid1024" => "".time() ]
))
// endpoint
->host("mpaas.cn-hangzhou.aliyuncs.com")
// 是否开启 debug 模式
->debug(true)
->request();
}
}
模板推送指针对单个目标 ID 的消息推送,消息通过模板创建。多个 ID 可以使用同一个模板。
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
---|---|---|---|---|
taskName | String | 是 | 模板测试 | 推送任务名称。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空间 |
deliveryType | Long | 是 | 3 | 目标 ID 类型,数值选择如下:
|
targetMsgkey | String | 是 | {“user1024”:”1578807462788”} | 推送目标,为 map 形式:
|
expiredSeconds | Long | 是 | 300 | 消息有效期,单位为秒。 |
templateName | String | 是 | 测试模板 | 模板名称,在控制台创建模板。 |
templateKeyValue | String | 否 | {“money”:”200”,”name”:”张三”} | 模板参数,为 map 格式,和 templateName 指定的模板对应,key 为占位符名称,value 为要替换的值,例如模板内容为(两个 # 之间为占位符名称) 恭喜#name#中了#money#元 。 |
extendedParams | String | 否 | {“key1”:”value1”} | 扩展参数,为 map 形式。 |
点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 创建DefaultAcsClient实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域ID
"******", // RAM账号的AccessKey ID
"******"); // RAM账号AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);
// Create an API request and set parameters
PushTemplateRequest request = new PushTemplateRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTemplateName("测试模板");
//你好#name#,恭喜中奖#money#元
Map<String,String> templatekv = new HashMap<String, String>();
templatekv.put("name","张三");
templatekv.put("money","200");
request.setTemplateKeyValue(JSON.toJSONString(templatekv));
request.setExpiredSeconds(600L);
request.setTaskName("模板测试");
request.setDeliveryType(3L);
Map<String,String> target = new HashMap<String, String>();
String msgKey = String.valueOf(System.currentTimeMillis());
target.put("userid1024",msgKey);
request.setTargetMsgkey(JSON.toJSONString(target));
PushTemplateResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushTemplateRequest
import json
import time
# Initialize AcsClient instance
client = AcsClient(
"AccessKey ID",
"AccessKey Secret",
"cn-hangzhou"
);
# Initialize a request and set parameters
request = PushTemplateRequest.PushTemplateRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211721")
request.set_WorkspaceId("test")
request.set_TemplateName("template1024")
templatekv = {"name":"张三","money":"200"}
request.set_TemplateKeyValue(json.dumps(templatekv))
request.set_DeliveryType(3)
request.set_TaskName("python模板测试任务")
request.set_ExpiredSeconds(600)
target = {"userid1024":str(time.time())}
request.set_TargetMsgkey(json.dumps(target))
# Print response
response = client.do_action_with_exception(request)
print response
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushTemplateRequest } = sdk;
// 创建客户端
const client = new Client({
accessKeyId: 'accessKeyId',
accessKeySecret: 'accessKeySecret',
endpoint: 'mpaas.cn-hangzhou.aliyuncs.com',
apiVersion: '2019-08-21'
});
// 初始化 request
const request = new PushTemplateRequest();
request.appId = "ONEX570DA89211721";
request.workspaceId = "test";
request.templateName= "template1024";
const templatekv = {
name: '张三',
money:'300'
};
request.templateKeyValue = JSON.stringify(templatekv);
request.deliveryType = 3;
request.taskName = "Node测试任务";
request.expiredSeconds=600;
const extendedParam = {
test: '自定义扩展参数'
};
request.extendedParams = JSON.stringify(extendedParam);
const target = {
"userid1024": String(new Date().valueOf())
};
request.targetMsgkey = JSON.stringify(target);
// 调用 API
try {
client.pushTemplate(request).then(res => {
console.log('SUCCESS', res);
}).catch(e => {
console.log('FAIL', e);
});
} catch(e) {
console.log('ERROR', e);
}
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\MPaaS\MPaaS;
AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')
->regionId('cn-hangzhou')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->templatePush();
} catch (\Exception $e) {
}
}
public function templatePush() {
$request = MPaaS::v20190821()->pushTemplate();
$result = $request->host("mpaas.cn-hangzhou.aliyuncs.com")
// 是否开启 debug 模式
->debug(true)
->withAppId("ONEX570DA89211721")
->withWorkspaceId("test")
->withTemplateName("template1024")
->withTemplateKeyValue(json_encode(["name" => "张三", "money" => "200"]))
->withDeliveryType(3)
->withTaskName("PHP 测试任务")
->withExpiredSeconds(600)
->withTargetMsgkey(
json_encode(["userid1024" => "".time() ])
)
->request();
}
}
对各个推送 ID 推送不同消息。通过替换模板占位符的方式,创建针对某一推送 ID 的个性化消息。与模板推送的区别在于,每一个推送ID 可以收到内容不相同的消息。
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
---|---|---|---|---|
taskName | String | 是 | 批量测试 | 推送任务名称。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空间 |
deliveryType | Long | 是 | 3 | 目标 ID 类型,数值选择:
|
templateName | String | 是 | 测试模板 | 模板名称,在控制台创建模板。 |
targetMsgs | List | 是 | TargetMsg 对象的list | 目标对象列表,参数详见下方的 TargetMsg 对象。 |
expiredSeconds | Long | 是 | 300 | 消息有效期,单位为秒。 |
extendedParams | String | 否 | {“key1”:”value1”} | 统一扩展参数,为 map 形式。 |
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
---|---|---|---|---|
target | String | 是 | userid1024 | 目标 ID,根据 deliveryType 类型填写。 |
msgKey | String | 是 | 1578807462788 | 业务消息 ID,用于消息的排查。由用户定义,不可重复。 |
templateKeyValue | String | 否 | {“money”:”200”,”name”:”张三”} | 模板参数,为 map 形式,和 templateName 指定的模板对应,key 为占位符名称,value 为要替换的值,例如模板内容为(两个 # 之间为占位符名称) 恭喜#name#中了#money#元 。 |
extendedParams | String | 否 | {“key1”:”value1”} | 扩展参数,为 map 形式,针对每条消息的不同扩展参数。 |
点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 创建DefaultAcsClient实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域ID
"******", // RAM账号的AccessKey ID
"******"); // RAM账号AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);
// Create an API request and set parameters
PushMultipleRequest request = new PushMultipleRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setDeliveryType(3L);
request.setTaskName("批量测试");
request.setTemplateName("测试模板");
//你好#name#,恭喜中奖#money#元
List<PushMultipleRequest.TargetMsg> targetMsgs = new ArrayList<PushMultipleRequest.TargetMsg>();
PushMultipleRequest.TargetMsg targetMsg = new PushMultipleRequest.TargetMsg();
targetMsg.setTarget("userid1024");
targetMsg.setMsgKey(String.valueOf(System.currentTimeMillis()));
Map<String, String> templatekv = new HashMap<String, String>();
templatekv.put("name", "张三");
templatekv.put("money", "200");
targetMsg.setTemplateKeyValue(JSON.toJSONString(templatekv));
//目标数量不要超过400个
targetMsgs.add(targetMsg);
request.setTargetMsgs(targetMsgs);
request.setExpiredSeconds(600L);
PushMultipleResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushMultipleRequest
import json
import time
# Initialize AcsClient instance
client = AcsClient(
"AccessKey ID",
"AccessKey Secret",
"cn-hangzhou"
);
# Initialize a request and set parameters
request = PushMultipleRequest.PushMultipleRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211721")
request.set_WorkspaceId("test")
request.set_TemplateName("template1024")
request.set_DeliveryType(3)
request.set_TaskName("python测试任务")
request.set_ExpiredSeconds(600)
msgkey = str(time.time())
targets = [
{
"Target": "user1024",
"MsgKey": msgkey,
"TemplateKeyValue": {
"name": "张三",
"money": "200"
}
}
]
request.set_TargetMsgs(targets)
# Print response
response = client.do_action_with_exception(request)
print response
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushMultipleRequest,PushMultipleRequestTargetMsg } = sdk;
// 创建客户端
const client = new Client({
accessKeyId: 'accessKeyId',
accessKeySecret: 'AccessKey Secret',
endpoint: 'mpaas.cn-hangzhou.aliyuncs.com',
apiVersion: '2019-08-21'
});
// 初始化 request
const request = new PushMultipleRequest();
request.appId = "ONEX570DA89211721";
request.workspaceId = "test";
request.templateName= "template1024";
const templatekv = {
name: '张三',
money:'300'
};
//request.templateKeyValue = JSON.stringify(templatekv);
request.deliveryType = 3;
request.taskName = "Node测试任务";
request.expiredSeconds=600;
const extendedParam = {
test: '自定义扩展参数'
};
request.extendedParams = JSON.stringify(extendedParam);
const targetMsgkey = new PushMultipleRequestTargetMsg();
targetMsgkey.target = "userid1024";
targetMsgkey.msgKey = String(new Date().valueOf());
targetMsgkey.templateKeyValue = JSON.stringify(templatekv);;
request.targetMsg = [targetMsgkey];
// 调用 API
try {
client.pushMultiple(request).then(res => {
console.log('SUCCESS', res);
}).catch(e => {
console.log('FAIL', e);
});
} catch(e) {
console.log('ERROR', e);
}
<?php
use AlibabaCloud\Client\AlibabaCloud;
use AlibabaCloud\MPaaS\MPaaS;
AlibabaCloud::accessKeyClient('accessKeyId', 'accessKeySecret')
->regionId('cn-hangzhou')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->multiPush();
} catch (\Exception $e) {
}
}
public function multiPush() {
$request = MPaaS::v20190821()->pushMultiple();
$result = $request->host("mpaas.cn-hangzhou.aliyuncs.com")
// 是否开启 debug 模式
->debug(true)
->withAppId("ONEX570DA89211721")
->withWorkspaceId("test")
->withTemplateName("template1024")
->withDeliveryType(3)
->withTaskName("PHP测试批量任务")
->withExpiredSeconds(600)
->withTargetMsg(
[
[
"Target" => "userid1024",
"MsgKey" => "" . time(),
"TemplateKeyValue" => json_encode([
"name" => "张三",
"money" => "200",
])
]
]
)
->request();
}
}
对全网设备推送相同消息,消息通过模板创建。
参数名称 | 类型 | 是否必填 | 示例 | 描述 |
---|---|---|---|---|
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 格式,和 templateName 指定的模板对应,key 为占位符名称,value 为要替换的值。 |
pushStatus | Long | 否 | 0 | 针对 iOS 群发,群发时,推送登录状态:
|
unBindPeriod | Long | 否 | 1 | 退出登录时长,当 pushStatus 为 1 时为必填:
|
点击这里 查看下方代码示例中 AccessKeyId 与 AccessKeySecret 的获取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 创建DefaultAcsClient实例并初始化
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地域ID
"******", // RAM账号的AccessKey ID
"******"); // RAM账号AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);
PushBroadcastRequest request = new PushBroadcastRequest();
request.setAppId("ONEX570DA89211720");
request.setWorkspaceId("test");
request.setDeliveryType(2L);
request.setMsgkey(String.valueOf(System.currentTimeMillis()));
request.setExpiredSeconds(600L);
request.setTaskName("群发任务");
request.setTemplateName("群发测试");
//这是一个公告:#content#
Map<String, String> templatekv = new HashMap<String, String>();
templatekv.put("content", "公告内容");
request.setTemplateKeyValue(JSON.toJSONString(templatekv));
PushBroadcastResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushBroadcastRequest
import json
import time
# Initialize AcsClient instance
client = AcsClient(
"AccessKey ID",
"AccessKey Secret",
"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 response
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushBroadcastRequest } = sdk;
// 创建客户端
const client = new Client({
accessKeyId: 'accessKeyId',
accessKeySecret: 'AccessKey Secret',
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
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();
}
}
扩展参数会跟随消息体到达客户端,供用户自定义处理。
扩展参数包含以下三类:
系统扩展参数
这些扩展参数被系统占用,注意不要修改此类参数的 value 值。系统扩展参数包括:
系统具有一定意义的扩展参数
这些扩展参数被系统占用,且具有一定的意义,您可以配置此类扩展参数的 value 值。系统具有一定意义的扩展参数及其说明参见下表。
key | 说明 |
---|---|
sound | 自定义铃声,value 配置为铃声的路径,本参数仅对小米和苹果手机有效。 |
badge | 应用图标角标,value 配置为具体数值。本扩展参数会跟随消息体到达客户端。
|
mutable-content | APNs 自定义推送标识,推送的时候携带本参数即表示支持 iOS 10 的 UNNotificationServiceExtension ;若不携带本参数,则为普通推送。Value 配置为 1 。 |
badge_add_num | 华为渠道推送角标增加数。 |
badge_class | 华为渠道桌面图标对应的应用入口 Activity 类。 |
big_text | 大文本样式,value 固定为 1,填写其他值无效。本参数仅对小米和华为手机有效。 |
用户自定义扩展参数
除了系统扩展参数和系统具有一定意义的扩展参数,其他的参数 key 都属于用户扩展参数。用户自定义扩展参数会随消息体中的扩展参数到达客户端,供用户自定义处理。
结果码 | 结果消息 | 说明 |
---|---|---|
100 | SUCCESS | 成功 |
-1 | SIGNATURE_MISMATCH | 签名不匹配 |
3001 | NEED_DELIVERYTOKEN | deliveryToken 为空 |
3002 | NEED_FILE | 文件为空 |
3003 | NEED_APPID_WORKSPACEID | appid 或 workspace 为空 |
3007 | APPID_WRONG | appid 或 workspace 不合法 |
3008 | OS_TYPE_NOT_SUPPORTED | 推送平台类型不支持 |
3009 | DELIVERY_TYPE_NOT_SUPPORTED | 目标 ID 类型不支持 |
3012 | NEED_USERID | UserId 为空 |
3019 | TASKNAME_NULL | 任务名称为空 |
3020 | EXPIREDSECONDS_WRONG | 消息超时时间非法 |
3021 | TOKEN_OR_USERID_NULL | 目标为空 |
3022 | TEMPLATE_NOT_EXIST | 模板不存在 |
3023 | TEMPLATEKV_NOT_ENOUGH | 模板参数不匹配 |
3024 | PAYLOAD_NOT_ENOUGH | 标题或内容为空 |
3025 | NEED_TEMPLATE | 模板为空 |
3026 | EXPIREDTIME_TOO_LONG | 消息有效期过长 |
3028 | INVALID_PARAM | 参数非法 |
3029 | SINGLE_PUSH_TARGET_TOO_MUCH | 推送目标过多 |
3030 | BROADCAST_ONLY_SUPPORT_BY_DEVICE | 只支持设备维度的群发 |
3031 | REQUEST_SHOULD_BE_UTF8 | 请求体编码需为 UTF-8 |
3032 | REST_API_SWITCH_NOT_OPEN | 推送 API 接口关闭 |
3033 | UNKNOWN_REST_SIGN_TYPE | 签名类型不支持 |
3035 | EXTEND_PARAM_TO_MUCH | 扩展字段太多,不能超过 20 个 |
3036 | TEMPLATE_ALREADY_EXIST | 模板已存在 |
3037 | TEMPLATE_NAME_NULL | 模板名称为空 |
3038 | TEMPLATE_NAME_INVALID | 模板名称非法 |
3039 | TEMPLATE_CONTENT_INVALID | 模板内容非法 |
3040 | TEMPLATE_TITLE_INVALID | 模板标题非法 |
3041 | TEMPLATE_DESC_INFO_INVALID | 模板描述非法 |
3042 | TEMPLATE_URI_INVALID | 模板 URI 非法 |
3043 | SINGLE_PUSH_CONTENT_TOO_LONG | 消息体过长 |
3044 | INVALID_EXTEND_PARAM | 扩展参数非法 |
9000 | SYSTEM_ERROR | 系统错误 |
在文档使用中是否遇到以下问题
更多建议
匿名提交