全部產品
Search
文件中心

Mobile Platform as a Service:群發推送

更新時間:Jan 09, 2026

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

重要

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

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

  • 在訊息推送控制台上建立好目標模板,並確保模板中存在預留位置,否則將無法實現訊息的個人化推送(即對不同推送 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 類型訊息

}

用於傳遞廠商訊息分類,詳情請參見 廠商訊息分類

notifyLevel

Map

notifyLevel: {"oppo":"2"//OPPO通知欄+鎖屏}

廠商訊息提醒等級,如 OPPO 訊息等級如下所示:

  • 1 - 通知欄

  • 2 - 通知欄+鎖屏

  • 3 - 通知欄+鎖屏+橫幅+震動+鈴聲

miChannelId

String

"123321"

小米廠商推送渠道的 channelId

timeMode

Integer

0

時間模式:

  • 0 - 固定天數(預設)

  • 1 - 時間範圍

bindStartTime

Long

1746720000000

綁定開始時間戳

bindEndTime

Long

1746806219999

綁定結束時間戳記

unBindStartTime

Long

1746720000000

解除綁定開始時間戳

unBindEndTime

Long

1746806219999

解除綁定結束時間戳記

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 的擷取方式 。

import com.alibaba.fastjson.JSON;
import com.aliyun.mpaas20201028.Client;
import com.aliyun.mpaas20201028.models.PushBroadcastRequest;
import com.aliyun.mpaas20201028.models.PushBroadcastResponse;
import com.aliyun.teaopenapi.models.Config;
import java.text.SimpleDateFormat;

public static void main(String[] args) throws Exception {
    // 阿里雲帳號AccessKey擁有所有API的存取權限,建議您使用RAM使用者進行API訪問或日常營運。
    // 強烈建議不要把AccessKey ID和AccessKey Secret儲存到工程代碼裡,否則可能導致AccessKey泄露,威脅您帳號下所有資源的安全。
    // 本樣本以將AccessKey ID和AccessKey Secret儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡。
    // 建議先完成環境變數配置
    Config config = new Config();
    // 必填,您的 AccessKey ID
    config.setAccessKeyId(System.getenv("MPAAS_AK_ENV"));
    // 必填,您的 AccessKey Secret
    config.setAccessKeySecret(System.getenv("MPAAS_SK_ENV"));
    // mPaaS 的 REGION_ID 和 Endpoint,以杭州非金為例
    config.setRegionId("cn-hangzhou");
    config.setEndpoint("mpaas.cn-hangzhou.aliyuncs.com");
    Client client = new Client(config);

    PushBroadcastRequest request = new PushBroadcastRequest();
    request.setAppId("ONEX570DA89211721");
    request.setWorkspaceId("test");
    request.setTenantId("xxx");
    request.setTemplateName("測試模版");
    request.setExpiredSeconds(180L);
    request.setTaskName("群發任務");
    request.setAndroidChannel(2);
    // 1-安卓系統,2、ios系統,7-鴻蒙系統
    request.setDeliveryType(1L);
    // 0-固定天數,1-時間範圍
    // request.setTimeMode(1);
    // 0-查詢繫結裝置,1-查詢繫結/解除綁定裝置資訊,2-查詢解除綁定裝置資訊
    request.setPushStatus(0L);
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    long startTime = dateFormat.parse("2024-05-20 15:59:48").getTime();
    long endTime = dateFormat.parse("2024-05-20 15:59:48").getTime();
    request.setBindStartTime(startTime);
    request.setBindEndTime(endTime);
    request.setMsgkey(String.valueOf(System.currentTimeMillis()));
    System.out.println("request==>"+JSON.toJSONString(request));
    PushBroadcastResponse acsResponse = client.pushBroadcast(request);
    System.out.println("response==>"+JSON.toJSONString(acsResponse));
}

Python 程式碼範例

# -*- coding: utf8 -*-

from aliyunsdkcore.client import AcsClient
from aliyunsdkmpaas.request.v20190821 import PushBroadcastRequest
import json
import time

// 阿里雲帳號 AccessKey 擁有所有 API 的存取權限,風險很高。強烈建議您建立並使用 RAM 使用者進行 API 訪問或日常營運,請登入 RAM 控制台建立 RAM 使用者
// 此處以把 AccessKey 和 AccessKeySecret 儲存在環境變數為例說明。您也可以根據業務需要,儲存到設定檔裡
// 強烈建議不要把 AccessKey 和 AccessKeySecret 儲存到代碼裡,會存在密鑰泄漏風險
// 建議先完成環境變數配置
# Initialize AcsClient instance
String accessKeyId = System.getenv("MPAAS_AK_ENV");
String accessKeySecret = System.getenv("MPAAS_SK_ENV");
client = AcsClient(
accessKeyId,      
accessKeySecret, 
"cn-hangzhou"
);

# Initialize a request and set parameters
request = PushBroadcastRequest.PushBroadcastRequest()
request.set_endpoint("mpaas.cn-hangzhou.aliyuncs.com")
request.set_AppId("ONEX570DA89211720")
request.set_WorkspaceId("test")
request.set_TemplateName("broadcastTemplate")
templatekv = {"content":"這個一個公告"}
request.set_TemplateKeyValue(json.dumps(templatekv))
request.set_DeliveryType(1)
request.set_TaskName("python測試群發任務")
request.set_ExpiredSeconds(600)
request.set_Msgkey(str(time.time()))

# Print response
response = client.do_action_with_exception(request)
print 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();
    }
}