訊息推送支援通過 API 介面調用的方式實現極簡推送、模板推送、批量推送、群發推送、訊息撤回、流量分析、定時推送功能。訊息推送支援即時推送、定時推送、迴圈推送三種不同推送策略,以滿足您在不同情境下的推送需求,減少重複工作量。同時,提供簡訊補充服務,即通過簡訊通道進行訊息補充,以提升訊息觸達率。
目前,僅杭州非金融區提供簡訊補充服務。
使用簡訊業務,會產生額外的電訊廠商費用。有關簡訊服務的計費方式和定價資訊,請參考 什麼是簡訊服務。
廠商通道的參數特殊限制,請參考:
廠商通道 | 規則限制 |
華為 | |
榮耀 | |
鴻蒙 | |
小米 | |
OPPO | |
vivo | |
訊息推送提供以下服務端 API,具體描述見下表。
API | 描述 |
對一個目標 ID 推送一條訊息。 | |
對一個目標 ID 推送一條訊息,訊息通過模板建立。 | |
對多個目標 ID 推送不同訊息。基於模板,為各推送 ID 配置不同的模板預留位置內容,從而實現訊息的個人化推送。 | |
對全網裝置推送相同訊息,訊息通過模板進行建立。 | |
對已推送的訊息進行撤回。通過極簡推送或模板推送方式推送的訊息可通過訊息 ID 撤回;通過批量推送和群發推送方式推送的訊息可通過任務 ID 撤回。 | |
查詢訊息推送統計資料,包括總推送條數、推送成功數、推送到達數、訊息開啟數、訊息忽略數等,通過控制台建立或通過調用 API 觸發的批量推送任務和群發推送工作清單以及任務詳情。 | |
支援查詢定時推送工作清單、取消定時推送任務。定時推送任務分為定時推送和迴圈推送兩種:
|
SDK 準備
訊息推送支援 Java、Python、Node.js、PHP 四種語言版本。針對不同的語言版本,在調用上述推送方式前,需要進行相應的推送準備。
下面分別對各個語言版本的 SDK 準備工作進行說明。
Java
對於非金區(非金融區)使用者,訊息推送 SDK 最新版本為 3.0.10;對於金區使用者,訊息推送 SDK 最新版本為 2.1.9。
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-mpaas</artifactId>
<version>3.0.10</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>
Python
執行以下命令添加 SDK 相關依賴。
## 阿里雲SDK
pip install aliyun-python-sdk-core
## mpaas SDK
pip install aliyun-python-sdk-mpaas
Node.js
執行以下命令添加 SDK 相關依賴。
npm i @alicloud/mpaas20190821
PHP
執行以下命令添加 SDK 相關依賴。
composer require alibabacloud/sdk
環境變數配置
配置環境變數 MPAAS_AK_ENV 和 MPAAS_SK_ENV。
Linux 和 macOS 系統配置方法執行以下命令:
export MPAAS_AK_ENV=<access_key_id> export MPAAS_SK_ENV=<access_key_secret>
說明access_key_id
替換為已準備好的 AccessKey ID,access_key_secret
替換為 AccessKey Secret。Windows 系統配置方法
建立環境變數,添加環境變數 MPAAS_AK_ENV 和 MPAAS_SK_ENV,並寫入已準備好的 AccessKey ID 和 AccessKey Secret。
重啟 Windows 系統。
極簡推送
對一個推送 ID 推送一條訊息。
在調用本介面之前,您需要引入依賴,詳見 SDK 準備。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
classification | String | 否 | 1 | 用於傳遞 vivo 推送通道的訊息類型:
不填則預設為 1。 |
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 形式:
說明 推送目標不可以超過 10 個,即 |
expiredSeconds | Long | 是 | 300 | 訊息有效期間,單位為秒。 |
pushStyle | Integer | 是 | 0 | 推送樣式:
|
extendedParams | String | 否 | {“key1”:”value1”} | 擴充參數,為 Map 形式。 |
pushAction | Long | 否 | 0 | 單擊訊息後的跳轉方式:
預設為 Web URL。 |
uri | String | 否 | http://www | 單擊訊息後的跳轉地址。 |
silent | Long | 否 | 1 | 是否靜默:
|
notifyType | String | 否 | 表示訊息通道類型:
| |
imageUrls | String | 否 | 大圖連結(JSON 字串),支援 OPPO、HMS、MIUI、FCM 和 iOS 推送通道,也可以使用 | |
iconUrls | String | 否 | 表徵圖連結(JSON 字串),支援 OPPO、HMS、MIUI、FCM 和 iOS 推送通道,也可以使用 | |
strategyType | Integer | 否 | 1 | 推送策略類型:
不填則預設為 0。 |
StrategyContent | String | 否 | {\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”} | 推送策略詳情(JSON 字串)。 |
smsStrategy | int | 否 | 2 | 簡訊策略:
|
smsSignName | String | 否 | mPaaS 測試 | 簡訊簽名 |
smsTemplateCode | String | 否 | SMS_216070269 | 簡訊模板 ID |
smsTemplateParam | String | 否 | {\"code\": 123456} | 簡訊模板變數對應的實際值,JSON 格式。 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //華為 FINANCE 財務類型訊息 "vivo": "1" //vivo IM 類型訊息 } | 用於傳遞華為訊息分類以及 vivo 二級訊息分類參數,詳情請參見 廠商訊息分類。 |
miChannelId | String | 否 | "123321" | 小米廠商推送渠道的 channelId |
activityEvent | String | 否 | 即時活動事件,可選 update/end:
| |
activityContentState | JSONObject | 否 | 即時活動訊息的 | |
dismissalDate | long | 否 | 即時活動訊息到期時間(秒級時間戳記),可選欄位,不傳則按 iOS 系統預設失效時間 12h。 |
關於 smsStrategy
參數:
如果
smsStrategy
的值不為 0,則smsSignName
、smsTemplateCode
和smsTemplateParam
必填。
關於 activityEvent
參數:
當
activityEvent
為 end 事件時,dismissalDate
配置的到期時間才會生效。當
activityEvent
為 update 事件時,dismissalDate
配置的到期時間不會生效。若傳 end 事件但不傳
dismissalDate
,iOS 系統預設 4h 後結束即時活動。
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 的擷取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。
// 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
// 本樣本以將AccessKey ID和AccessKey Secret儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡。
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
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);
request.setPushStyle(2);
String imageUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"fcmUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"iosUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
String iconUrls = "{\"defaultUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"hmsUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://pre-mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}";
request.setImageUrls(imageUrls);
request.setIconUrls(iconUrls);
request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");
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();
}
Python 程式碼範例
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushSimpleRequest
import json
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
# Initialize AcsClient instance
client = AcsClient(
"cn-hangzhou",
accessKeyId,
accessKeySecret
);
# 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
Node.js 程式碼範例
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushSimpleRequest } = 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 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 程式碼範例
<?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 可以使用同一個模板。
在調用本介面之前,確保已完成以下操作:
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
classification | String | 否 | 1 | 用於傳遞 vivo 推送通道的訊息類型:
不填則預設為 1。 |
taskName | String | 是 | 模板測試 | 推送任務名稱。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
deliveryType | Long | 是 | 3 | 目標 ID 類型,數值選擇如下:
|
targetMsgkey | String | 是 | {“user1024”:”1578807462788”} | 推送目標,為 Map 形式:
說明 推送目標不可以超過 10 個,即 |
expiredSeconds | Long | 是 | 300 | 訊息有效期間,單位為秒。 |
templateName | String | 是 | 測試模板 | 模板名稱,在控制台建立模板。 |
templateKeyValue | String | 否 | {“money”:”200”,”name”:”張三”} | 模板參數,為 map 格式,和 |
extendedParams | String | 否 | {“key1”:”value1”} | 擴充參數,為 Map 形式。 |
notifyType | String | 否 | 表示訊息通道類型:
| |
strategyType | Integer | 否 | 1 | 推送策略類型:
不填則預設為 0。 |
StrategyContent | String | 否 | {\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”} | 推送策略詳情(JSON 字串)。 |
smsStrategy | int | 否 | 2 | 簡訊策略:
|
smsSignName | String | 否 | mPaaS 測試 | 簡訊簽名 |
smsTemplateCode | String | 否 | SMS_216070269 | 簡訊模板 ID |
smsTemplateParam | StringString | 否 | {\"code\": 123456} | 簡訊模板變數對應的實際值,JSON 格式。 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //華為 FINANCE 財務類型訊息 "vivo": "1" //vivo IM 類型訊息 } | 用於傳遞華為訊息分類以及 vivo 二級訊息分類參數,詳情請參見 廠商訊息分類。 |
miChannelId | String | 否 | "123321" | 小米廠商推送渠道的 channelId |
activityEvent | String | 否 | 即時活動事件,可選 update/end:
| |
activityContentState | JSONObject | 否 | 即時活動訊息的 | |
dismissalDate | long | 否 | 即時活動訊息到期時間(秒級時間戳記),可選欄位,不傳則按 iOS 系統預設失效時間 12h。 |
關於 smsStrategy
參數:
如果
smsStrategy
的值不為 0,則smsSignName
、smsTemplateCode
和smsTemplateParam
必填。
關於 activityEvent
參數:
當
activityEvent
為 end 事件時,dismissalDate
配置的到期時間才會生效。當
activityEvent
為 update 事件時,dismissalDate
配置的到期時間不會生效。若傳
end
事件但不傳dismissalDate
,iOS 系統預設 4h 後結束即時活動。
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 的擷取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。
// 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
// 本樣本以將AccessKey ID和AccessKey Secret儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡。
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
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));
request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");
PushTemplateResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
Python 程式碼範例
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushTemplateRequest
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 = 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
Node.js 程式碼範例
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushTemplateRequest } = 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 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 程式碼範例
<?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 可以收到內容不相同的訊息。
當推送目標為移動分析人群或自訂標籤人群時,不支援定時和迴圈推送。
在調用本介面之前,確保已完成以下操作:
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
classification | String | 否 | 1 | 用於傳遞 vivo 推送通道的訊息類型:
不填則預設為 1。 |
taskName | String | 是 | 批量測試 | 推送任務名稱。 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
deliveryType | Long | 是 | 3 | 目標 ID 類型,數值選擇如下:
說明 使用者維度和裝置維度目標最多可以傳 100 個。 |
templateName | String | 是 | 測試模板 | 模板名稱,在控制台建立模板。 |
targetMsgs | List | 是 | targetMsgs 對象列表 | 目標對象列表,參數詳見下方的 targetMsgs 對象說明。 |
expiredSeconds | Long | 是 | 300 | 訊息有效期間,單位為秒。 |
extendedParams | String | 否 | {“key1”:”value1”} | 統一擴充參數,為 Map 形式。 |
notifyType | String | 否 | 表示訊息通道類型:
| |
strategyType | Integer | 否 | 1 | 推送策略類型: 不填則預設為 0。 |
StrategyContent | String | 否 | {\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”} | 推送策略詳情(JSON 字串)。 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //華為 FINANCE 財務類型訊息 "vivo": "1" //vivo IM 類型訊息 } | 用於傳遞華為訊息分類以及 vivo 二級訊息分類參數,詳情請參見 廠商訊息分類。 |
miChannelId | String | 否 | "123321" | 小米廠商推送渠道的 channelId |
activityEvent | String | 否 | 即時活動事件,可選 update/end:
| |
activityContentState | JSONObject | 否 | 即時活動訊息的 | |
dismissalDate | long | 否 | 即時活動訊息到期時間(秒級時間戳記),可選欄位,不傳則按 iOS 系統預設失效時間 12h。 |
關於 activityEvent
參數:
當
activityEvent
為 end 事件時,dismissalDate
配置的到期時間才會生效。當
activityEvent
為 update 事件時,dismissalDate
配置的到期時間不會生效。若傳 end 事件但不傳
dismissalDate
,iOS 系統預設 4h 後結束即時活動。
targetMsgs 對象說明
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
target | String | 是 | userid1024 | 目標 ID,根據 deliveryType 類型填寫。 |
msgKey | String | 是 | 1578807462788 | 業務訊息 ID,用於訊息的排查。由使用者定義,不可重複。 |
templateKeyValue | String | 否 | {“money”:”200”,”name”:”張三”} | 模板參數,為 Map 形式,和 |
extendedParams | String | 否 | {“key1”:”value1”} | 擴充參數,為 map 形式,針對每條訊息的不同擴充參數。 |
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 的擷取方式。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置。
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
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));
//目標數量不要超過 100 個
targetMsgs.add(targetMsg);
request.setTargetMsgs(targetMsgs);
request.setExpiredSeconds(600L);
request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");
PushMultipleResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
System.out.println(response.getPushResult().getData()); // 推送任務 ID 或定時推送任務 ID
} catch (ClientException e) {
e.printStackTrace();
}
Python 程式碼範例
# -*- coding: utf8 -*-
from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushMultipleRequest
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 = 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
Node.js 程式碼範例
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushMultipleRequest,PushMultipleRequestTargetMsg } = 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 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 程式碼範例
<?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();
}
}
群發推送
對全網裝置推送相同訊息,訊息通過模板建立。
當推送目標為移動分析人群或自訂標籤人群時,不支援定時和迴圈推送。
在調用本介面之前,確保已完成以下操作:
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
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 字串)。 |
thirdChannelCategory | Map | 否 | thirdChannelCategory: { "hms": "9", //華為 FINANCE 財務類型訊息 "vivo": "1" //vivo IM 類型訊息 } | 用於傳遞華為訊息分類以及 vivo 二級訊息分類參數,詳情請參見 廠商訊息分類。 |
miChannelId | String | 否 | "123321" | 小米廠商推送渠道的 channelId |
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 的擷取方式 。
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
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));
request.setStrategyType(2);
request.setStrategyContent("{\"fixedTime\":1630303126000,\"startTime\":1625673600000,\"endTime\":1630303126000,\"circleType\":1,\"circleValue\":[1, 7],\"time\":\"13:45:11\"}");
PushBroadcastResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
System.out.println(response.getPushResult().getData()); // 推送任務 ID或定時推送任務 ID
} catch (ClientException e) {
e.printStackTrace();
}
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 response
Node.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();
}
}
訊息撤回
通過極簡推送或模板推送方式推送的訊息可通過訊息 ID 撤回;通過批量推送和群發推送方式推送的訊息可通過任務 ID 撤回。僅支援撤回最近 7 天內的訊息。
通過訊息 ID 撤回
支援撤回通過極簡推送和模板推送發送的訊息。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
messageId | String | 是 | 1578807462788 | 業務方訊息 ID,使用者自訂,用於在業務方系統中唯一標識訊息。 |
targetId | String | 是 | user1024 | 目標 ID,若原訊息以裝置維度推送,則目標 ID 為裝置識別碼;若原訊息以使用者維度推送,則目標 ID 為使用者識別碼。 |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
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 | 請求錯誤內容。 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
RevokePushMessageRequest request = new RevokePushMessageRequest();
request.setAppId("ONEX570DA89211720");
request.setWorkspaceId("test");
request.setMessageId("console_1624516744112"); // 業務方訊息 ID
request.setTargetId("mpaas_push_demo"); // 目標 ID
RevokePushMessageResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
通過任務 ID 撤回
支援撤回通過批量推送和群發推送發送的訊息。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
taskId | String | 是 | 20842863 | 推送任務 ID,可在控制台推送工作清單中查詢。 |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
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 | 請求錯誤內容。 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
RevokePushTaskRequest request = new RevokePushTaskRequest();
request.setAppId("ONEX570DA89211720");
request.setWorkspaceId("test");
request.setTaskId("20842863"); // 推送任務 ID
RevokePushTaskResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
流量分析
查詢統計資料
查詢訊息推送統計資料,包括總推送條數、推送成功數、推送到達數、訊息開啟數、訊息忽略數等資料。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
startTime | long | 是 | 1619798400000 | 要查詢的時間範圍的開始時間戳,以毫秒為單位,精確到天。 |
endTime | long | 是 | 1624358433000 | 要查詢的時間範圍的結束時間戳記,以毫秒為單位,精確到天。開始時間和結束時間間隔不能超過 90 天。 |
platform | String | 否 | ANDROID | 平台,不傳則表示查詢全部。可選值:IOS,ANDROID |
channel | String | 否 | ANDROID | 推送通道,不傳表示查詢全部。可選值:IOS、FCM、HMS、MIUI、OPPO、VIVO、ANDROID(自建通道) |
type | String | 否 | SIMPLE | 推送類型,不傳表示查詢全部。可選值:SIMPLE、TEMPLATE、MULTIPLE、BROADCAST |
taskId | String | 否 | 20842863 | 推送任務 ID |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 請求 ID |
ResultCode | String | OK | 請求結果碼 |
ResultMessage | String | param is invalid | 請求錯誤描述 |
ResultContent | JSON | 響應內容 | |
data | JSON | 響應內容。該參數值包含在 | |
pushTotalNum | float | 100 | 推送數 |
pushNum | float | 100 | 推送成功數 |
arrivalNum | float | 100 | 推送到達數 |
openNum | float | 100 | 推送開啟數 |
openRate | float | 100 | 推送開啟率 |
ignoreNum | float | 100 | 推送忽略數 |
ignoreRate | float | 100 | 推送忽略率 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
QueryPushAnalysisCoreIndexRequest request = new QueryPushAnalysisCoreIndexRequest();
request.setAppId("ONEX570DA89211720");
request.setWorkspaceId("test");
request.setStartTime(Long.valueOf("1617206400000"));
request.setEndTime(Long.valueOf("1624982400000"));
request.setPlatform("ANDROID");
request.setChannel("ANDROID");
request.setType("SIMPLE");
request.setTaskId("20842863");
QueryPushAnalysisCoreIndexResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
查詢推送工作清單
查詢通過控制台建立或通過調用 API 觸發的批量推送任務和群發推送任務資訊。
請求參數
參數名稱 | 類型 | 是否必填 | 描述 | 描述 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
startTime | long | 是 | 1619798400000 | 開始時間戳,以毫秒為單位,精確到天。 |
taskId | String | 否 | 20842863 | 推送任務 ID |
taskName | String | 否 | 測試工作 | 推送任務名稱 |
pageNumber | int | 否 | 1 | 頁碼,預設為 1。 |
pageSize | int | 否 | 10 | 頁數,預設為 500。 |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 請求 ID |
ResultCode | String | OK | 請求結果碼 |
ResultMessage | String | param is invalid | 請求錯誤描述 |
ResultContent | JSON | 響應內容 | |
data | JSONArray | 響應內容。該參數值包含在 | |
taskId | String | 20927873 | 任務 ID |
taskName | String | 測試工作 | 任務名稱 |
templateId | String | 9108 | 模板 ID |
templateName | String | 測試模板 | 模板名稱 |
type | long | 3 | 推送類型,其中:
|
gmtCreate | long | 1630052750000 | 建立時間 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
QueryPushAnalysisTaskListRequest request = new QueryPushAnalysisTaskListRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("default");
request.setStartTime(Long.valueOf("1617206400000"));
request.setTaskId("20845212");
request.setTaskName("測試工作");
request.setPageNumber(1);
request.setPageSize(10);
QueryPushAnalysisTaskListResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
查詢推送任務詳情
查詢通過控制台建立或通過調用 API 觸發的批量推送任務和群發推送任務的任務詳情。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
taskId | String | 是 | 20842863 | 推送任務 ID |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 請求 ID |
ResultCode | String | OK | 請求結果碼 |
ResultMessage | String | param is invalid | 請求錯誤描述 |
ResultContent | JSON | 響應內容 | |
data | JSON | 響應內容。該參數值包含在 | |
taskId | long | 20927872 | 任務 ID |
pushNum | float | 10 | 推送數 |
pushSuccessNum | float | 10 | 推送成功數 |
pushArrivalNum | float | 10 | 推送到達數 |
startTime | long | 1630052735000 | 開始時間(毫秒) |
endTime | long | 1630052831000 | 結束時間(毫秒) |
duration | string | 00 小時 01 分 36 秒 | 期間 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
QueryPushAnalysisTaskDetailRequest request = new QueryPushAnalysisTaskDetailRequest();
request.setAppId("ONEXPREF4F5C52081557");
request.setWorkspaceId("default");
request.setTaskId("20845212");
QueryPushAnalysisTaskDetailResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
定時推送任務
查詢定時推送工作清單
查詢已建立的定時推送工作清單,包括定時推送任務和迴圈推送任務。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
startTime | long | 是 | 1619798400000 | 觸發定時推送的開始時間戳,並非定時推送任務的建立時間。 |
endtTime | long | 是 | 1630425600000 | 觸發定時推送的結束時間戳記。 |
type | int | 否 | 0 | 推送方式,其中:
|
uniqueId | String | 否 | 49ec0ed5a2a642bcbe139a2d7a419d6d | 定時推送任務的唯一 ID。若傳主任務 ID,則返回主任務下的所有子任務的資訊;若傳子任務 ID,則返回子任務的資訊。 |
pageNumber | int | 否 | 1 | 頁碼,預設為 1。 |
pageSize | int | 否 | 10 | 分頁大小,預設為 500。 |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 請求 ID |
ResultCode | String | OK | 請求結果碼 |
ResultMessage | String | param is invalid | 請求錯誤描述 |
ResultContent | JSON | 響應內容 | |
data | JSON | 響應內容。該參數值包含在 | |
totalCount | int | 10 | 總數 |
list | JSONArray | 任務數組 | |
uniqueId | String | 56918166720e46e1bcc40195c9ca71db | 定時推送任務的唯一 ID。
|
parentId | String | 56918166720e46e1bcc40195c9ca71db | 定時推送任務主 ID。
|
pushTime | Date | 1630486972000 | 預計推送時間 |
pushTitle | String | 測試標題 | 通知標題 |
pushContent | String | 測試本文 | 通知內容 |
type | int | 0 | 推送方式,其中:
|
deliveryType | int | 1 | 推送類型,其中:
|
strategyType | int | 1 | 推送策略類型,其中:
|
executedStatus | int | 0 | 是否執行,其中:
|
createType | int | 0 | 建立方式,其中:
|
gmtCreate | Date | 1629971346000 | 建立時間 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
QueryPushSchedulerListRequest request = new QueryPushSchedulerListRequest();
request.setAppId("ONEXPREF4F5C52081557");
request.setWorkspaceId("default");
request.setStartTime(Long.valueOf("1625068800000"));
request.setEndTime(Long.valueOf("1630425600000"));
request.setType(0);
request.setUniqueId("49ec0ed5a2a642bcbe139a2d7a419d6d");
request.setPageNumber(1);
request.setPageSize(10);
QueryPushSchedulerListResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
取消定時推送任務
取消未執行的定時推送任務(包括迴圈推送任務),支援批量取消。
請求參數
參數名稱 | 類型 | 是否必填 | 樣本 | 描述 |
appId | String | 是 | ONEX570DA89211721 | mPaaS App ID |
workspaceId | String | 是 | test | mPaaS 工作空間 |
type | int | 否 | 0 | 定時推送任務 ID 類型,預設為 0。
|
uniqueIds | String | 是 | 714613eb,714613ec,714613ed | 定時推送任務的唯一 ID,多個 ID 以“,”分隔,上限為 30 個。 |
返回參數
參數名稱 | 類型 | 樣本 | 描述 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | 請求 ID |
ResultCode | String | OK | 請求結果碼 |
ResultMessage | String | param is invalid | 請求錯誤描述 |
ResultContent | String | {714613eb=1,714613ed=0} | 取消結果,1 表示成功,0 表示失敗。 |
使用樣本
DefaultProfile.addEndpoint("cn-hangzhou", "mpaas", "mpaas.cn-hangzhou.aliyuncs.com");
// 建立 DefaultAcsClient 執行個體並初始化
// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // 地區 ID
accessKeyId,
accessKeySecret);
IAcsClient client = new DefaultAcsClient(profile);
CancelPushSchedulerRequest request = new CancelPushSchedulerRequest();
request.setAppId("ONEXPREF4F5C52081557");
request.setWorkspaceId("default");
request.setUniqueIds("49ec0ed5a2a642bcbe139a2d7a419d6d, 49ec0ed5a2a642bcbe139a2d7a419d6c");
CancelPushSchedulerResponse response;
try {
response = client.getAcsResponse(request);
System.out.println(response.getResultCode());
System.out.println(response.getResultMessage());
} catch (ClientException e) {
e.printStackTrace();
}
擴充參數
擴充參數會跟隨訊息體到達用戶端,供使用者自訂處理。
擴充參數包含以下三類:
系統擴充參數
這些擴充參數被系統佔用,注意不要修改此類參數的 value 值。系統擴充參數包括
notifyType
、action
、silent
、pushType
、templateCode
、channel
、taskId
。系統具有一定意義的擴充參數
這些擴充參數被系統佔用,且具有一定的意義,您可以配置此類擴充參數的 value 值。系統具有一定意義的擴充參數及其說明參見下表。
Key
說明
sound
自訂鈴聲,參數值配置為鈴聲的路徑,本參數僅對小米和蘋果手機有效。
badge
應用表徵圖角標,參數值配置為具體數值。本擴充參數會跟隨訊息體到達用戶端。
對於 Android 手機,您需要處理角標的實現邏輯。
對於蘋果手機,手機系統將自動實現角標。訊息推送至目標手機後,應用表徵圖的角標即會顯示為參數值中配置的數值。
mutable-content
APNs 自訂推送標識,推送的時候攜帶本參數即表示支援 iOS 10 的
UNNotificationServiceExtension
;若不攜帶本參數,則為普通推送。參數值配置為 1。badge_add_num
華為通道推送角標增加數。
badge_class
華為通道案頭表徵圖對應的應用入口 Activity 類。
big_text
大文本樣式,value 固定為 1,填寫其他值無效。本參數僅對小米和華為手機有效。
使用者自訂擴充參數
除了系統擴充參數和系統具有一定意義的擴充參數,其他的參數 key 都屬於使用者擴充參數。使用者自訂擴充參數會隨訊息體中的擴充參數到達用戶端,供使用者自訂處理。
API 呼叫結果碼
結果碼 | 結果訊息 | 說明 |
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 | 擴充參數非法。 |
3049 | MULTIPLE_INNER_EXTEND_PARAM_TO_MUCH | 批量推送內部擴充參數需小於 10 個。 |
3050 | MSG_PAYLOAD_TOO_LONG | 訊息體太長。 |
3051 | BROADCAST_ALL_USER_NEED_UNBIND_PERIOD | 群發推送針對所有使用者(登入使用者 + 登出使用者),必須傳解除綁定參數。 |
3052 | BROADCAST_ALL_USER_UNBIND_PERIOD_INVALID | 群發解除綁定參數非法。 |
3053 | BROADCAST_ALL_USER_NOT_SUPPORT_SELFCHANNEL_ANDROID | 群發所有使用者,不支援自建通道群發。 |
3054 | DELIVERYTOKEN_INVALID | 自建通道 token 非法。 |
3055 | MULTIPLE_TARGET_NUMBER_TOO_MUCH | 批量推送目標過多。 |
3056 | TEMPLATE_NUM_TOO_MUCH | 模板數量過多。 |
3057 | ANDROID_CHANNEL_PARAM_INVALID |
|
3058 | BADGE_ADD_NUM_INVALID | 角標參數非法。 |
3059 | BADGE_ADD_NUM_NEED_BADGE_CLASS |
|
8014 | ACCOUNT_NO_PERMISSION | 帳號無許可權。請檢查 AK/SK 與 appId 和 workspaceId 是否一致。 |
9000 | SYSTEM_ERROR | 系統錯誤。 |