全部產品
Search
文件中心

Mobile Platform as a Service:服務端 API

更新時間:Dec 18, 2024

訊息推送支援通過 API 介面調用的方式實現極簡推送、模板推送、批量推送、群發推送、訊息撤回、流量分析、定時推送功能。訊息推送支援即時推送、定時推送、迴圈推送三種不同推送策略,以滿足您在不同情境下的推送需求,減少重複工作量。同時,提供簡訊補充服務,即通過簡訊通道進行訊息補充,以提升訊息觸達率。

重要
  • 目前,僅杭州非金融區提供簡訊補充服務。

  • 使用簡訊業務,會產生額外的電訊廠商費用。有關簡訊服務的計費方式和定價資訊,請參考 什麼是簡訊服務

廠商通道的參數特殊限制,請參考:

廠商通道

規則限制

華為

受限說明

介面文檔

榮耀

推送數量管理細則

介面文檔

鴻蒙

使用約束

介面文檔

小米

推送郵件規則

介面文檔

OPPO

推送服務受限說明

介面文檔

vivo

推送訊息限制說明

介面文檔

訊息推送提供以下服務端 API,具體描述見下表。

API

描述

極簡推送

對一個目標 ID 推送一條訊息。

模板推送

對一個目標 ID 推送一條訊息,訊息通過模板建立。

批量推送

對多個目標 ID 推送不同訊息。基於模板,為各推送 ID 配置不同的模板預留位置內容,從而實現訊息的個人化推送。

群發推送

對全網裝置推送相同訊息,訊息通過模板進行建立。

訊息撤回

對已推送的訊息進行撤回。通過極簡推送或模板推送方式推送的訊息可通過訊息 ID 撤回;通過批量推送和群發推送方式推送的訊息可通過任務 ID 撤回。

流量分析

查詢訊息推送統計資料,包括總推送條數、推送成功數、推送到達數、訊息開啟數、訊息忽略數等,通過控制台建立或通過調用 API 觸發的批量推送任務和群發推送工作清單以及任務詳情。

定時推送任務

支援查詢定時推送工作清單、取消定時推送任務。定時推送任務分為定時推送和迴圈推送兩種:

  • 定時推送:在指定時間推送訊息。例如,指定在 6.19 日早上 8:00 推送訊息。

  • 迴圈推送:在指定時間範圍內重複推送訊息,例如指定在 6.1 ~ 9.30 期間,每周五早上 8:00 推送訊息。一個迴圈推送任務可能產生一個或多個定時推送任務。

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 系統配置方法

    1. 建立環境變數,添加環境變數 MPAAS_AK_ENV MPAAS_SK_ENV,並寫入已準備好的 AccessKey ID 和 AccessKey Secret。

    2. 重啟 Windows 系統。

極簡推送

對一個推送 ID 推送一條訊息。

在調用本介面之前,您需要引入依賴,詳見 SDK 準備

請求參數

參數名稱

類型

是否必填

樣本

描述

classification

String

1

用於傳遞 vivo 推送通道的訊息類型:

  • 0 - 營運類訊息

  • 1 - 系統類別訊息

不填則預設為 1。

taskName

String

simpleTest

推送任務名稱。

title

String

測試

訊息的標題。

content

String

測試

訊息的本文。

appId

String

ONEX570DA89211721

mPaaS App ID

workspaceId

String

test

mPaaS 工作空間

deliveryType

Long

3

目標 ID 類型,數值選擇如下:

  • 1 - Android 裝置維度

  • 2 - iOS 裝置維度

  • 3 - 使用者維度

  • 5 - 即時活動 pushToken

  • 6 - 即時活動 activityId

targetMsgkey

String

{“user1024”:”1578807462788”}

推送目標,為 Map 形式:

  • key:為目標,配合 deliveryType

    • 如果 deliveryType 為 1 ,則 key 為 Android 裝置識別碼。

    • 如果 deliveryType 為 2,則 key 為 iOS 裝置識別碼。

    • 如果 deliveryType 為 3 ,則 key 為使用者識別碼,即使用者調用綁定介面時傳入的 userid 值。

  • value:訊息業務 ID,使用者自訂,必須保持唯一。

說明

推送目標不可以超過 10 個,即 targetMsgkey 參數最多可傳入 10 個索引值對。

expiredSeconds

Long

300

訊息有效期間,單位為秒。

pushStyle

Integer

0

推送樣式:

  • 0 - 預設

  • 1 - 大文本

  • 2 - 圖文訊息

extendedParams

String

{“key1”:”value1”}

擴充參數,為 Map 形式。

pushAction

Long

0

單擊訊息後的跳轉方式:

  • 0 - Web URL

  • 1 - Intent Activity

預設為 Web URL。

uri

String

http://www

單擊訊息後的跳轉地址。

silent

Long

1

是否靜默:

  • 1 - 靜默

  • 0 - 非靜默

notifyType

String

表示訊息通道類型:

  • transparent - MPS 自建通道

  • notify - 預設通道

imageUrls

String

{\”defaultUrl\”:\”https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"fcmUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"iosUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}

大圖連結(JSON 字串),支援 OPPO、HMS、MIUI、FCM 和 iOS 推送通道,也可以使用 defaultUrl 作為預設值。

iconUrls

String

{\”defaultUrl\”:\”https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"hmsUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"oppoUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\",\"miuiUrl\":\"https://mpaas.oss-cn-hangzhou.aliyuncs.com/tmp/test.png\"}

表徵圖連結(JSON 字串),支援 OPPO、HMS、MIUI、FCM 和 iOS 推送通道,也可以使用 defaultUrl 作為預設值。

strategyType

Integer

1

推送策略類型:

  • 0 - 立即

  • 1 - 定時

  • 2 - 迴圈

不填則預設為 0。

StrategyContent

String

{\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”}

推送策略詳情(JSON 字串)。strategyType 不等於 0 時必填。具體參數詳見下方的 StrategyContent 欄位說明

smsStrategy

int

2

簡訊策略:

  • 0 - 無(預設)

  • 1 - 補發

  • 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:

  • update - 更新事件

  • end - 結束事件

activityContentState

JSONObject

即時活動訊息的 content-state,需和用戶端定義的參數保持一致。

dismissalDate

long

即時活動訊息到期時間(秒級時間戳記),可選欄位,不傳則按 iOS 系統預設失效時間 12h。

說明

關於 smsStrategy 參數:

  • 如果 smsStrategy 的值不為 0,則 smsSignNamesmsTemplateCodesmsTemplateParam 必填。

關於 activityEvent 參數:

  • activityEvent 為 end 事件時,dismissalDate 配置的到期時間才會生效。

  • activityEvent 為 update 事件時,dismissalDate 配置的到期時間不會生效。

  • 若傳 end 事件但不傳 dismissalDate,iOS 系統預設 4h 後結束即時活動。

StrategyContent 欄位說明

JSON 格式轉化為 String 傳值。

參數名稱

類型

是否必填

樣本

描述

fixedTime

long

1630303126000

定時推送時間戳記(單位:毫秒,精確到秒)。推送策略類型為定時(strategyType 值為 1)時,fixedTime 必填。

startTime

long

1640966400000

重複持續時間開始時間戳(單位:毫秒,精確到天)。推送策略類型為迴圈(strategyType 值為 2)時,startTime 必填。

endTime

long

1672416000000

重複持續時間結束時間戳記(單位:毫秒,精確到天),迴圈結束時間不得超過當天后的 180 天。推送策略類型為迴圈(strategyType 值為 2)時,endTime 必填。

circleType

int

3

迴圈類型:

  • 1 - 每天

  • 2 - 每周

  • 3 - 每月

推送策略類型為迴圈(strategyType 值為 2)時,circleType 必填。

circleValue

int[]

[1,3]

迴圈值:

  • 若迴圈類型為每天:空

  • 若迴圈類型為每周:設定每周迴圈的時間,例如 [1,3] 表示每周 1 和周 3。

  • 若迴圈類型為每月:設定每月迴圈推送的時間,例如 [1,3] 表示每月 1 號和 3 號。

推送策略類型為迴圈(strategyType 值為 2)且迴圈類型(circleType)非每天時,circleValue 必填。

time

String

09:45:11

迴圈推送時間(時分秒,格式為 HH:mm:ss) 。推送策略類型為迴圈(strategyType 值為 2)時,time 必填。

說明
  • 未執行的定時或迴圈推送任務總數上限預設為 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

請求狀態。Success 參數值包含在 PushRresult JSON 字串中。

ResultMsg

String

param is invalid

請求錯誤內容。ResultMsg 參數值包含在 PushRresult JSON 字串中。

Data

String

903bf653c1b5442b9ba07684767bf9c2

定時推送任務 ID。strategyType 不等於 0 時,該欄位不為空白。

程式碼範例

請確保您的 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 可以使用同一個模板。

在調用本介面之前,確保已完成以下操作:

  • 在訊息推送控制台上建立好目標模板,詳細操作參見 建立模板

  • 引入 SDK 依賴,詳見 SDK 準備

請求參數

參數名稱

類型

是否必填

樣本

描述

classification

String

1

用於傳遞 vivo 推送通道的訊息類型:

  • 0 - 營運類訊息

  • 1 - 系統類別訊息

不填則預設為 1。

taskName

String

模板測試

推送任務名稱。

appId

String

ONEX570DA89211721

mPaaS App ID

workspaceId

String

test

mPaaS 工作空間

deliveryType

Long

3

目標 ID 類型,數值選擇如下:

  • 1 - Android 裝置維度

  • 2 - iOS 裝置維度

  • 3 - 使用者維度

  • 5 - 即時活動 pushToken

  • 6 - 即時活動 activityId

targetMsgkey

String

{“user1024”:”1578807462788”}

推送目標,為 Map 形式:

  • key:為目標,配合 deliveryType

    • 如果 deliveryType 為 1 ,則 key 為 Android 裝置識別碼。

    • 如果 deliveryType 為 2,則 key 為 iOS 裝置識別碼。

    • 如果 deliveryType 為 3 ,則 key 為使用者識別碼,即使用者調用綁定介面時傳入的 userid 值。

  • value:訊息業務 ID,使用者自訂,必須保持唯一。

說明

推送目標不可以超過 10 個,即 targetMsgkey 參數最多可傳入 10 個索引值對。

expiredSeconds

Long

300

訊息有效期間,單位為秒。

templateName

String

測試模板

模板名稱,在控制台建立模板。

templateKeyValue

String

{“money”:”200”,”name”:”張三”}

模板參數,為 map 格式,和 templateName 指定的模板對應,key 為預留位置名稱,value 為要替換的值,例如模板內容為(兩個 # 之間為預留位置名稱) 恭喜#name#中了#money#元

extendedParams

String

{“key1”:”value1”}

擴充參數,為 Map 形式。

notifyType

String

表示訊息通道類型:

  • transparent - MPS 自建通道

  • notify - 預設通道

strategyType

Integer

1

推送策略類型:

  • 0 - 立即

  • 1 - 定時

  • 2 - 迴圈

不填則預設為 0。

StrategyContent

String

{\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”}

推送策略詳情(JSON 字串)。strategyType 不等於 0 時必填。具體參數詳見下方的 StrategyContent 欄位說明

smsStrategy

int

2

簡訊策略:

  • 0 - 無(預設)

  • 1 - 補發

  • 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:

  • update - 更新事件

  • end - 結束事件

activityContentState

JSONObject

即時活動訊息的 content-state,需和用戶端定義的參數保持一致。

dismissalDate

long

即時活動訊息到期時間(秒級時間戳記),可選欄位,不傳則按 iOS 系統預設失效時間 12h。

說明

關於 smsStrategy 參數:

  • 如果 smsStrategy 的值不為 0,則 smsSignNamesmsTemplateCodesmsTemplateParam 必填。

關於 activityEvent 參數:

  • activityEvent 為 end 事件時,dismissalDate 配置的到期時間才會生效。

  • activityEvent 為 update 事件時,dismissalDate 配置的到期時間不會生效。

  • 若傳 end 事件但不傳 dismissalDate,iOS 系統預設 4h 後結束即時活動。

StrategyContent 欄位說明

JSON 格式轉化為 String 傳值。

參數名稱

類型

是否必填

樣本

描述

fixedTime

long

1630303126000

定時推送時間戳記(單位:毫秒,精確到秒)。推送策略類型為定時(strategyType 值為 1)時,fixedTime 必填。

startTime

long

1640966400000

重複持續時間開始時間戳(單位:毫秒,精確到天)。推送策略類型為迴圈(strategyType 值為 2)時,startTime 必填。

endTime

long

1672416000000

重複持續時間結束時間戳記(單位:毫秒,精確到天),迴圈結束時間不得超過當天后的 180 天。推送策略類型為迴圈(strategyType 值為 2)時,endTime 必填。

circleType

int

3

迴圈類型:

  • 1 - 每天

  • 2 - 每周

  • 3 - 每月

推送策略類型為迴圈(strategyType 值為 2)時,circleType 必填。

circleValue

int[]

[1,3]

迴圈值:

  • 若迴圈類型為每天:空。

  • 若迴圈類型為每周:設定每周迴圈的時間,例如 [1,3] 表示每周 1 和周 3。

  • 若迴圈類型為每月:設定每月迴圈推送的時間,例如 [1,3] 表示每月 1 號和 3 號。

推送策略類型為迴圈(strategyType 值為 2)且迴圈類型(circleType)非每天時,circleValue 必填。

time

String

09:45:11

迴圈推送時間(時分秒,格式為 HH:mm:ss) 。推送策略類型為迴圈(strategyType 值為 2)時,time 必填。

說明
  • 未執行的定時或迴圈推送任務總數上限預設為 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

請求狀態。Success 參數值包含在 PushRresult JSON 字串中。

ResultMsg

String

param is invalid

請求錯誤內容。ResultMsg 參數值包含在 PushRresult JSON 字串中。

Data

String

903bf653c1b5442b9ba07684767bf9c2

定時推送任務 ID。strategyType 不等於 0 時,該欄位不為空白。

程式碼範例

請確保您的 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 可以收到內容不相同的訊息。

重要

當推送目標為移動分析人群或自訂標籤人群時,不支援定時和迴圈推送。

在調用本介面之前,確保已完成以下操作:

  • 在訊息推送控制台上建立好目標模板,並確保模板中存在預留位置,否則將無法實現訊息的個人化推送(即對不同推送 ID 推送不同訊息)。詳細操作參見 建立模板

  • 引入 SDK 依賴,詳見 SDK 準備

請求參數

參數名稱

類型

是否必填

樣本

描述

classification

String

1

用於傳遞 vivo 推送通道的訊息類型:

  • 0 - 營運類訊息

  • 1 - 系統類別訊息

不填則預設為 1。

taskName

String

批量測試

推送任務名稱。

appId

String

ONEX570DA89211721

mPaaS App ID

workspaceId

String

test

mPaaS 工作空間

deliveryType

Long

3

目標 ID 類型,數值選擇如下:

  • 1 - Android 裝置維度

  • 2 - iOS 裝置維度

  • 3 - 使用者維度

說明

使用者維度和裝置維度目標最多可以傳 100 個。

templateName

String

測試模板

模板名稱,在控制台建立模板。

targetMsgs

List

targetMsgs 對象列表

目標對象列表,參數詳見下方的 targetMsgs 對象說明

expiredSeconds

Long

300

訊息有效期間,單位為秒。

extendedParams

String

{“key1”:”value1”}

統一擴充參數,為 Map 形式。

notifyType

String

表示訊息通道類型:

  • transparent - MPS 自建通道

  • notify - 預設通道

strategyType

Integer

1

推送策略類型:

  • 0 - 立即

  • 1 - 定時

  • 2 - 迴圈

不填則預設為 0。

StrategyContent

String

{\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”}

推送策略詳情(JSON 字串)。strategyType 不等於 0 時必填。具體參數詳見下方的 StrategyContent 欄位說明

thirdChannelCategory

Map

thirdChannelCategory: {

"hms": "9", //華為 FINANCE 財務類型訊息

"vivo": "1"

//vivo IM 類型訊息

}

用於傳遞華為訊息分類以及 vivo 二級訊息分類參數,詳情請參見 廠商訊息分類

miChannelId

String

"123321"

小米廠商推送渠道的 channelId

activityEvent

String

即時活動事件,可選 update/end:

  • update - 更新事件

  • end - 結束事件

activityContentState

JSONObject

即時活動訊息的 content-state,需和用戶端定義的參數保持一致

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 形式,和 templateName 指定的模板對應,key 為預留位置名稱,value 為要替換的值,例如模板內容為(兩個 # 之間為預留位置名稱) 恭喜#name#中了#money#元

extendedParams

String

{“key1”:”value1”}

擴充參數,為 map 形式,針對每條訊息的不同擴充參數。

StrategyContent 欄位說明

JSON 格式轉化為 String 傳值。

參數名稱

類型

是否必填

樣本

描述

fixedTime

long

1630303126000

定時推送時間戳記(單位:毫秒,精確到秒)。推送策略類型為定時(strategyType 值為 1)時,fixedTime 必填。

startTime

long

1640966400000

重複持續時間開始時間戳(單位:毫秒,精確到天)。推送策略類型為迴圈(strategyType 值為 2)時,startTime 必填。

endTime

long

1672416000000

重複持續時間結束時間戳記(單位:毫秒,精確到天),迴圈結束時間不得超過當天后的 180 天。推送策略類型為迴圈(strategyType 值為 2)時,endTime 必填。

circleType

int

3

迴圈類型:

  • 1 - 每天

  • 2 - 每周

  • 3 - 每月

推送策略類型為迴圈(strategyType 值為 2)時,circleType 必填。

circleValue

int[]

[1,3]

迴圈值:

  • 若迴圈類型為每天:空

  • 若迴圈類型為每周:設定每周迴圈的時間,例如 [1,3] 表示每周 1 和周 3。

  • 若迴圈類型為每月:設定每月迴圈推送的時間,例如 [1,3] 表示每月 1 號和 3 號。

推送策略類型為迴圈(strategyType 值為 2)且迴圈類型(circleType)非每天時,circleValue 必填。

time

String

09:45:11

迴圈推送時間(時分秒,格式為 HH:mm:ss) 。推送策略類型為迴圈(strategyType 值為 2)時,time 必填。

說明
  • 未執行的定時或迴圈推送任務總數上限預設為 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

請求狀態。Success 參數值包含在返回的 PushRresult JSON 字串中。

ResultMsg

String

param is invalid

請求錯誤內容。ResultMsg 參數值包含在返回的 PushRresult JSON 字串中。

Data

String

903bf653c1b5442b9ba07684767bf9c2

定時推送任務 ID。strategyType 不等於 0 時,該欄位不為空白。

程式碼範例

請確保您的 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();
    }
}

群發推送

對全網裝置推送相同訊息,訊息通過模板建立。

重要

當推送目標為移動分析人群或自訂標籤人群時,不支援定時和迴圈推送。

在調用本介面之前,確保已完成以下操作:

  • 在訊息推送控制台上建立好目標模板,並確保模板中存在預留位置,否則將無法實現訊息的個人化推送(即對不同推送 ID 推送不同訊息)。詳細操作參見 建立模板

  • 引入 SDK 依賴,詳見 SDK 準備

請求參數

參數名稱

類型

是否必填

樣本

描述

classification

String

1

用於傳遞 vivo 推送通道的訊息類型:

  • 0 - 營運類訊息

  • 1 - 系統類別訊息

不填則預設為 1。

taskName

String

群發測試工作

推送任務名稱。

appId

String

ONEX570DA89211721

mPaaS App ID

workspaceId

String

test

mPaaS 工作空間

deliveryType

Long

1

目標 ID 類型,數值選擇:

  • 1 - Android 群發

  • 2 - iOS 群發

  • 7- HarmonyOS 群發

msgkey

String

1578807462788

業務方訊息 ID,使用者自訂,不可重複。

expiredSeconds

Long

300

訊息有效期間,單位為秒。

templateName

String

群發模板

模板名稱,在控制台建立模板。

templateKeyValue

String

{“content”:”公告內容”}

模板參數,為 Map 格式,和 templateName 指定的模板對應,key 為預留位置名稱,value 為要替換的值。

pushStatus

Long

0

群發時,推送登入狀態:

  • 0 - 綁定的使用者(預設)

  • 1 - 所有使用者(包括綁定和解除綁定的使用者)

  • 2 - 解除綁定的使用者

bindPeriod

Integer

登入時間長度,當 pushStatus 值為 0 時必填:

  • 1 - 7 天內綁定的使用者

  • 2 - 15 天內綁定的使用者

  • 3 - 60 天內綁定的使用者

  • 4 - 永久

說明

bindPeriod 參數僅在非金環境中可配置。

unBindPeriod

Long

退出登入時間長度,當 pushStatus 值為 1 或 2 時必填:

  • 1 - 7 天內解除綁定的使用者

  • 2 - 15 天內解除綁定的使用者

  • 3 - 60 天內解除綁定的使用者

  • 4 - 永久

androidChannel

Integer

安卓訊息通道:

  • 1 - MPS 自建通道

  • 2 - 預設通道

strategyType

int

1

推送策略類型:

  • 0 - 立即

  • 1 - 定時

  • 2 - 迴圈

不填則預設為 0。

StrategyContent

String

{\”fixedTime\”:1630303126000,\”startTime\”:1625673600000,\”endTime\”:1630303126000,\”circleType\”:1,\”circleValue\”:[1, 7],\”time\”:\”13:45:11\”}

推送策略詳情(JSON 字串)。strategyType 不等於 0 時必填。具體參數詳見下方的 StrategyContent 欄位說明。

thirdChannelCategory

Map

thirdChannelCategory: {

"hms": "9", //華為 FINANCE 財務類型訊息

"vivo": "1"

//vivo IM 類型訊息

}

用於傳遞華為訊息分類以及 vivo 二級訊息分類參數,詳情請參見 廠商訊息分類

miChannelId

String

"123321"

小米廠商推送渠道的 channelId

StrategyContent 欄位說明

JSON 格式轉化為 String 傳值。

參數名稱

類型

是否必填

樣本

描述

fixedTime

long

1630303126000

定時推送時間戳記(單位:毫秒,精確到秒)。推送策略類型為定時(strategyType 值為 1)時,fixedTime 必填。

startTime

long

1640966400000

重複持續時間開始時間戳(單位:毫秒,精確到天)。推送策略類型為迴圈(strategyType 值為 2)時,startTime 必填。

endTime

long

1672416000000

重複持續時間結束時間戳記(單位:毫秒,精確到天),迴圈結束時間不得超過當天后的 180 天。推送策略類型為迴圈(strategyType 值為 2)時,endTime 必填。

circleType

int

3

迴圈類型:

  • 1 - 每天

  • 2 - 每周

  • 3 - 每月

推送策略類型為迴圈(strategyType 值為 2)時,circleType 必填。

circleValue

int[]

[1,3]

迴圈值:

  • 若迴圈類型為每天:空

  • 若迴圈類型為每周:設定每周迴圈的時間,例如 [1,3] 表示每周 1 和周 3。

  • 若迴圈類型為每月:設定每月迴圈推送的時間,例如 [1,3] 表示每月 1 號和 3 號。

推送策略類型為迴圈(strategyType 值為 2)且迴圈類型(circleType)非每天時,circleValue 必填。

time

String

09:45:11

迴圈推送時間(時分秒,格式為 HH:mm:ss) 。推送策略類型為迴圈(strategyType 值為 2)時,time 必填。

說明
  • 未執行的定時或迴圈推送任務總數上限預設為 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

請求狀態。Success 參數值包含在 PushRresult JSON 字串中。

ResultMsg

String

param is invalid

請求錯誤內容。ResultMsg 參數值包含在 PushRresult JSON 字串中。

Data

String

903bf653c1b5442b9ba07684767bf9c2

定時推送任務 ID。strategyType 不等於 0 時,該欄位不為空白。

程式碼範例

請確保您的 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

請求狀態。Success 參數值包含在 PushRresult JSON 字串中。

ResultMsg

String

param is invalid

請求錯誤內容。ResultMsg 參數值包含在 PushRresult JSON 字串中。

使用樣本

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

請求狀態。Success 參數值包含在 PushRresult JSON 字串中。

ResultMsg

String

param is invalid

請求錯誤內容。ResultMsg 參數值包含在 PushRresult JSON 字串中。

使用樣本

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

響應內容。該參數值包含在 ResultContent 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

響應內容。該參數值包含在 ResultContent JSON 字串中。

taskId

String

20927873

任務 ID

taskName

String

測試工作

任務名稱

templateId

String

9108

模板 ID

templateName

String

測試模板

模板名稱

type

long

3

推送類型,其中:

  • 2 - 批量推送

  • 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

響應內容。該參數值包含在 ResultContent 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

推送方式,其中:

  • 0 - 極簡推送

  • 1 - 模板推送

  • 2 - 批量推送

  • 3 - 群發推送

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

響應內容。該參數值包含在 ResultContent JSON 字串中。

totalCount

int

10

總數

list

JSONArray

任務數組

uniqueId

String

56918166720e46e1bcc40195c9ca71db

定時推送任務的唯一 ID。

  • strategyType 值為 1,表示定時推送任務主 ID。

  • strategyType 值為 2,表示迴圈任務子 ID。

parentId

String

56918166720e46e1bcc40195c9ca71db

定時推送任務主 ID。

  • strategyType 值為 1,表示定時推送任務主 ID;

  • strategyType 值為 2,表示迴圈任務主 ID。

pushTime

Date

1630486972000

預計推送時間

pushTitle

String

測試標題

通知標題

pushContent

String

測試本文

通知內容

type

int

0

推送方式,其中:

  • 0 - 極簡推送

  • 1 - 模板推送

  • 2 - 批量推送

  • 3 - 群發推送

deliveryType

int

1

推送類型,其中:

  • 1 - Android

  • 2 - iOS

  • 3 - UserId

strategyType

int

1

推送策略類型,其中:

  • 1 - 定時

  • 2 - 迴圈

executedStatus

int

0

是否執行,其中:

  • 0 - 未執行

  • 1 - 已執行

createType

int

0

建立方式,其中:

  • 0 - API

  • 1 - 控制台

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。

  • 0 - 主任務 ID,對應 parentId

  • 1 - 子任務 ID,對應uniqueId

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 值。系統擴充參數包括 notifyTypeactionsilentpushTypetemplateCodechanneltaskId

  • 系統具有一定意義的擴充參數

    這些擴充參數被系統佔用,且具有一定的意義,您可以配置此類擴充參數的 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

androidChannel 參數非法。

3058

BADGE_ADD_NUM_INVALID

角標參數非法。

3059

BADGE_ADD_NUM_NEED_BADGE_CLASS

badge_add_num 參數需要 badge_class 參數。

8014

ACCOUNT_NO_PERMISSION

帳號無許可權。請檢查 AK/SK 與 appId 和 workspaceId 是否一致。

9000

SYSTEM_ERROR

系統錯誤。