メッセージプッシュサービス(MPS)は、メッセージプッシュ(シンプルプッシュ、テンプレートプッシュ、マルチプッシュ、ブロードキャストプッシュ)、メッセージの取り消し、メッセージの統計と分析、スケジュールされたプッシュの機能を実装するために、サーバーに次の OpenAPI を提供します。メッセージプッシュに関しては、MPS は即時プッシュ、タイミングプッシュ、スケジュールプッシュの 3 つのプッシュ戦略をサポートしており、さまざまなシナリオでのプッシュ要件を満たし、反復作業を削減します。同時に、SMS 補足サービス、つまり SMS チャネルを介してメッセージを補足してメッセージ到達率を向上させるサービスを提供しています。
現在、杭州の非金融分野でのみ SMS 補足サービスを提供しています。
SMS サービスのご利用には、別途オペレーター料金が発生します。SMS サービスの課金方法と料金については、「Alibaba Cloud SMS とは」をご参照ください。
メーカーチャネルの特別なパラメーター制限は次のとおりです。
メーカーチャネル | ルールと制限 |
Huawei | |
Honor | |
HarmonyOS | |
Xiaomi | |
OPPO | |
vivo | |
MPS は以下のサーバーサイド API を提供します。これらについては、以下の表で説明します。
API | 説明 |
メッセージプッシュ - シンプルプッシュ | 1 つのターゲット ID に 1 つのメッセージをプッシュします。 |
メッセージプッシュ - テンプレートプッシュ | 1 つのターゲット ID に 1 つのメッセージをプッシュします。メッセージはテンプレートに基づいて作成されます。 |
メッセージプッシュ - マルチプッシュ | 複数のターゲット ID に異なるメッセージをプッシュします。テンプレートに基づいて、ターゲット ID ごとに異なるテンプレートプレースホルダーを設定し、テンプレートに基づいてテンプレートプレースホルダーを使用してパーソナライズされたメッセージプッシュを実装します。 |
メッセージプッシュ - ブロードキャストプッシュ | すべてのデバイスに同じメッセージをプッシュします。メッセージはテンプレートに基づいて作成されます。 |
メッセージの取り消し | プッシュされたメッセージを取り消します。 シンプルプッシュまたはテンプレートプッシュでプッシュされたメッセージは、メッセージ ID で取り消すことができます。マルチプッシュまたはブロードキャストプッシュでプッシュされたメッセージは、タスク ID で取り消すことができます。 |
メッセージプッシュの分析 | プッシュされたメッセージ、正常にプッシュされたメッセージ、メッセージの到着、開封されたメッセージ、無視されたメッセージなどのメッセージプッシュ統計データをクエリし、MPS コンソールで作成された、または API の呼び出しによってトリガーされたマルチ/ブロードキャストプッシュタスクとタスクの詳細をクエリします。 |
スケジュールされたプッシュタスク | スケジュールされたプッシュタスクリストのクエリとスケジュールされたプッシュタスクのキャンセルをサポートします。スケジュールプッシュには、タイミングプッシュとサイクリックプッシュの 2 種類があります。
|
SDK の準備
MPS は、Java、Python、Node.js、PHP の 4 つのプログラミング言語をサポートしています。上記の API をメッセージプッシュのために呼び出す前に、プログラミング言語ごとに異なる準備をする必要があります。
次の例では、さまざまなプログラミング言語の SDK を実装する前に必要な準備について説明します。
Java
上記の 4 つの API をメッセージプッシュのために呼び出す前に、Maven 構成を導入します。次の依存関係をメインの pom ファイルにインポートします。
<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
次のコマンドを実行して、関連する依存関係を追加します。
## Aliyun SDK
pip install aliyun-python-sdk-core
## mPaaSs SDK
pip install aliyun-python-sdk-mpaasNode.js
次のコマンドを実行して、関連する依存関係を追加します。
npm i @alicloud/mpaas20190821PHP
次のコマンドを実行して、関連する依存関係を追加します。
composer require alibabacloud/sdkメッセージプッシュ - シンプルプッシュ
1 つのターゲット ID に 1 つのメッセージをプッシュします。この API を呼び出す前に、必要な依存関係を導入する必要があります。詳細については、「SDK の準備」をご参照ください。
リクエストパラメーター
パラメーター | データ型 | 必須 | 例 | 説明 |
classification | String | いいえ | 1 | vivo プッシュチャネルを介してプッシュされるメッセージのタイプを示します。
指定しない場合、デフォルトは 1 です。 |
taskName | String | はい | simpleTest | プッシュタスクの名前 |
title | String | はい | Test | メッセージタイトル |
content | String | はい | Test | メッセージ本文 |
appId | String | はい | ONEX570DA89211721 | mPaaS アプリ ID |
workspaceId | String | はい | test | mPaaS ワークスペース |
deliveryType | Long | はい | 3 | ターゲット ID のタイプ。有効な値:
|
targetMsgkey | String | はい | {"user1024":"1578807462788"} | メッセージがプッシュされるターゲット。マップ形式です。
ターゲットの数は 10 を超えることはできません。 |
expiredSeconds | Long | はい | 300 | メッセージの有効期間(秒)。 |
pushStyle | Integer | はい | 0 | プッシュスタイル:
|
extendedParams | String | いいえ | {"key1":"value1"} | 拡張パラメーター。マップ形式です。 |
pushAction | Long | いいえ | 0 | メッセージをタップしたときの リダイレクト方法。有効な値:
デフォルトのリダイレクト方法は Web URL です。 |
uri | String | いいえ | http://www | メッセージをタップしたときにリダイレクトされる URL。 |
silent | Long | いいえ | 1 | メッセージをサイレントにするかどうかを指定します。有効な値:
|
notifyType | String | いいえ | メッセージプッシュチャネル:
| |
imageUrls | String | いいえ | 大きな画像リンク(JSON 文字列)。OPPO、HMS、MIUI、FCM、iOS プッシュチャネルでサポートされています。 | |
iconUrls | String | いいえ | アイコンリンク(JSON 文字列)。OPPO、HMS、MIUI、FCM、iOS プッシュチャネルでサポートされています。 | |
strategyType | int | いいえ | 1 | プッシュ戦略:
デフォルトは 0 です。 |
StrategyContent | String | いいえ | プッシュ戦略の詳細(JSON 文字列)。 | |
activityEvent | String | いいえ | リアルタイムアクティビティイベント、オプションの update/end:
| |
activityContentState | JSONObject | いいえ | リアルタイムアクティビティメッセージの | |
dismissalDate | long | いいえ | リアルタイムアクティビティメッセージの有効期限(秒単位のタイムスタンプ)。オプションのフィールドです。送信されない場合、iOS システムのデフォルトの有効期限である 12 時間 が使用されます。 |
smsStrategy パラメーターについて:
smsStrategyの値が 0 でない場合、smsSignName、smsTemplateCode、smsTemplateParamが必要です。
activityEvent パラメーターについて:
activityEventが終了イベントの場合、dismissalDateで設定された有効期限が有効になります。activityEventが更新イベントの場合、dismissalDateで設定された有効期限は有効になりません。終了イベントが渡されたが、
dismissalDateが渡されなかった場合、iOS システムはデフォルトで 4 時間後にリアルタイムアクティビティを終了します。
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 です。
サイクル期間は、開始日の 00:00 から終了日の 24:00 までです。
サイクルの開始時刻も終了時刻も、その日の 00:00 より前であってはならず、終了時刻は開始時刻より前であってはなりません。
レスポンスパラメーター
パラメーター | データ型 | 例 | 説明 |
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 サンプルコード
次のサンプルコードの AccessKey ID と AccessKey シークレットの取得方法については、こちらをクリックしてください。
DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"*****"); // RAM アカウントの AccessKey シークレット
IAcsClient client = new DefaultAcsClient(profile);
// API リクエストを作成し、パラメーターを設定します
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));
// リクエストを開始し、レスポンスまたは例外を処理します
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
# AcsClient インスタンスを初期化します
client = AcsClient(
"***",
"***",
"cn-hongkong"
);
# リクエストを初期化し、パラメーターを設定します
request = PushSimpleRequest.PushSimpleRequest()
request.set_endpoint("mpaas.cn-hongkong.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))
# レスポンスを出力します
response = client.do_action_with_exception(request)
print responseNode.js サンプルコード
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushSimpleRequest } = sdk;
// クライアントを作成します
const client = new Client({
accessKeyId: '****',
accessKeySecret: '*****',
endpoint: 'mpaas.cn-hongkong.aliyuncs.com',
apiVersion: '2019-08-21'
});
// リクエストを初期化します。
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);
// 値はビジネスメッセージの ID です。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-hongkong')
->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() ]
))
// エンドポイント
->host("mpaas.cn-hongkong.aliyuncs.com")
// デバッグモードを有効にするかどうかを指定します
->debug(true)
->request();
}
}メッセージプッシュ - テンプレートプッシュ
テンプレートプッシュとは、1 つのメッセージを 1 つのターゲット ID にプッシュすることです。メッセージはテンプレートに基づいて作成されます。複数の ID が同じテンプレートを共有できます。
インターフェースを呼び出す前に、次の操作を完了していることを確認してください。
リクエストパラメーター
パラメーター | データ型 | 必須 | 例 | 説明 |
classification | String | いいえ | 1 | vivo プッシュチャネルを介してプッシュされるメッセージのタイプを示します。
指定しない場合、デフォルトは 1 です。 |
taskName | String | はい | templateTest | プッシュタスクの名前 |
appId | String | はい | ONEX570DA89211721 | mPaaS アプリ ID |
workspaceId | String | はい | test | mPaaS ワークスペース |
deliveryType | Long | はい | 3 | ターゲット ID のタイプ。有効な値:
|
targetMsgkey | String | はい | {"user1024":"1578807462788"} | メッセージがプッシュされるターゲット。マップ形式です。
ターゲットの数は 10 を超えることはできません。 |
expiredSeconds | Long | はい | 300 | メッセージの有効期間(秒)。 |
templateName | String | はい | testTemplate | テンプレートの名前。MPS コンソールでテンプレートを作成します。 |
templateKeyValue | String | いいえ | {"money":"200","name":"Bob"} | テンプレートのパラメーター。マップ形式です。パラメーターは、 |
extendedParams | String | いいえ | {"key1":"value1"} | 拡張パラメーター。マップ形式です。 |
notifyType | String | いいえ | メッセージプッシュチャネル:
| |
strategyType | int | いいえ | 1 | プッシュ戦略:
デフォルトは 0 です。 |
StrategyContent | String | いいえ | プッシュ戦略の詳細(JSON 文字列)。 | |
activityEvent | String | いいえ | リアルタイムアクティビティイベント、オプションの update/end:
| |
activityContentState | JSONObject | いいえ | リアルタイムアクティビティメッセージの | |
dismissalDate | long | いいえ | リアルタイムアクティビティメッセージの有効期限(秒単位のタイムスタンプ)。オプションのフィールドです。送信されない場合、iOS システムのデフォルトの有効期限である 12 時間が使用されます。 |
smsStrategy パラメーターについて:
smsStrategyの値が 0 でない場合、smsSignName、smsTemplateCode、smsTemplateParamが必要です。
activityEvent パラメーターについて:
activityEventが終了イベントの場合、dismissalDateで設定された有効期限が有効になります。activityEventが更新イベントの場合、dismissalDateで設定された有効期限は有効になりません。終了イベントが渡されたが、
dismissalDateが渡されなかった場合、iOS システムはデフォルトで 4 時間後にリアルタイムアクティビティを終了します。
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 です。
サイクル期間は、開始日の 00:00 から終了日の 24:00 までです。
サイクルの開始時刻も終了時刻も、その日の 00:00 より前であってはならず、終了時刻は開始時刻より前であってはなりません。
レスポンスパラメーター
パラメーター | データ型 | 例 | 説明 |
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 サンプルコード
次のサンプルコードの AccessKey ID と AccessKey シークレットの取得方法については、こちらをクリックしてください。
DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します。
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey シークレット
IAcsClient client = new DefaultAcsClient(profile);
// API リクエストを作成し、パラメーターを設定します
PushTemplateRequest request = new PushTemplateRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setTemplateName("testTemplate");
// #name# さん、#money# 円獲得おめでとうございます。
Map<String,String> templatekv = new HashMap<String, String>();
templatekv.put("name"," Bob");
templatekv.put("money","200");
request.setTemplateKeyValue(JSON.toJSONString(templatekv));
request.setExpiredSeconds(600L);
request.setTaskName("templateTest");
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
# AcsClient インスタンスを初期化します
client = AcsClient(
"AccessKey ID",
"AccessKey Secret",
"cn-hongkong"
);
# リクエストを初期化し、パラメーターを設定します
request = PushTemplateRequest.PushTemplateRequest()
request.set_endpoint("mpaas.cn-hongkong.aliyuncs.com")
request.set_AppId("ONEX570DA89211721")
request.set_WorkspaceId("test")
request.set_TemplateName("template1024")
templatekv = {"name":"Bob","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))
# レスポンスを出力します
response = client.do_action_with_exception(request)
print responseNode.js サンプルコード
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushTemplateRequest } = sdk;
// クライアントを作成します。
const client = new Client({
accessKeyId: 'accessKeyId',
accessKeySecret: 'accessKeySecret',
endpoint: 'mpaas.cn-hongkong.aliyuncs.com',
apiVersion: '2019-08-21'
});
// リクエストを初期化します。
const request = new PushTemplateRequest();
request.appId = "ONEX570DA89211721";
request.workspaceId = "test";
request.templateName= "template1024";
const templatekv = {
name: 'Bob',
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-hongkong')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->templatePush();
} catch (\Exception $e) {
}
}
public function templatePush() {
$request = MPaaS::v20190821()->pushTemplate();
$result = $request->host("mpaas.cn-hongkong.aliyuncs.com")
// デバッグモードを有効にするかどうかを指定します。
->debug(true)
->withAppId("ONEX570DA89211721")
->withWorkspaceId("test")
->withTemplateName("template1024")
->withTemplateKeyValue(json_encode(["name" => "Bob", "money" => "200"]))
->withDeliveryType(3)
->withTaskName("PHP テストタスク")
->withExpiredSeconds(600)
->withTargetMsgkey(
json_encode(["userid1024" => "".time() ])
)
->request();
}
}メッセージプッシュ - マルチプッシュ
この API を呼び出すと、異なるターゲット ID に異なるメッセージをプッシュできます。この API を使用すると、テンプレートのプレースホルダーを置き換えることによって、ターゲット ID ごとにパーソナライズされたメッセージを作成できます。テンプレートプッシュとは異なり、マルチプッシュでは、異なるターゲット ID に異なるコンテンツのメッセージを送信できます。
インターフェースを呼び出す前に、次の操作を完了していることを確認してください。
MPS コンソールでプレースホルダーを含むテンプレートを作成していること。そうでない場合、パーソナライズされたメッセージプッシュ、つまり異なるターゲット ID に異なるメッセージをプッシュすることはできません。詳細については、「テンプレートの作成」をご参照ください。
必要な依存関係を導入していること。詳細については、「SDK の準備」をご参照ください。
リクエストパラメーター
パラメーター | データ型 | 必須 | 例 | 説明 |
classification | String | いいえ | 1 | vivo プッシュチャネルを介してプッシュされるメッセージのタイプを示します。
指定しない場合、デフォルトは 1 です。 |
taskName | String | はい | multipleTest | プッシュタスクの名前 |
appId | String | はい | ONEX570DA89211721 | mPaaS アプリ ID |
workspaceId | String | はい | test | mPaaS ワークスペース |
deliveryType | Long | はい | 3 | ターゲット ID のタイプ。有効な値:
|
templateName | String | はい | testTemplate | テンプレート名。テンプレートは MPS コンソールで作成できます。 |
targetMsgs | List | はい | targetMsgs オブジェクトリスト | TargetMsg オブジェクトのリスト。| プッシュターゲットのリスト。各オブジェクトのパラメーターについては、「targetMsgs オブジェクト」をご参照ください。 |
expiredSeconds | Long | はい | 300 | メッセージの有効期間(秒)。 |
extendedParams | String | いいえ | {"key1":"value1"} | 拡張パラメーター。マップ形式です。 |
notifyType | String | いいえ | メッセージプッシュチャネル:
| |
strategyType | int tra | いいえ | 1 | プッシュ戦略:
デフォルトは 0 です。 |
StrategyContent | String | いいえ | プッシュ戦略の詳細(JSON 文字列)。 | |
activityEvent | String | いいえ | リアルタイムアクティビティイベント、オプションの update/end:
| |
activityContentState | JSONObject | いいえ | リアルタイムアクティビティメッセージの | |
dismissalDate | long | いいえ | リアルタイムアクティビティメッセージの有効期限(秒単位のタイムスタンプ)。オプションのフィールドです。送信されない場合、iOS システムのデフォルトの有効期限である 12 時間が使用されます。 |
activityEvent パラメーターについて:
activityEventが終了イベントの場合、dismissalDateで設定された有効期限が有効になります。activityEventが更新イベントの場合、dismissalDateで設定された有効期限は有効になりません。終了イベントが渡されたが、
dismissalDateが渡されなかった場合、iOS システムはデフォルトで 4 時間後にリアルタイムアクティビティを終了します。
targetMsgs オブジェクト
パラメーター | データ型 | 必須 | 例 | 説明 |
target | String | はい | userid1024 | ターゲット ID。 |
msgKey | String | はい | 1578807462788 | ビジネスメッセージの ID。この ID は、メッセージのトラブルシューティングに使用されます。ID はユーザー定義で、一意である必要があります。 |
templateKeyValue | String | いいえ | {"money":"200","name":"Bob"} | テンプレートのパラメーター。マップ形式です。パラメーターは、 |
extendedParams | String | いいえ | {"key1":"value1"} | 拡張パラメーター。マップ形式です。メッセージごとに異なる拡張パラメーターがあります。 |
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 です。
サイクル期間は、開始日の 00:00 から終了日の 24:00 までです。
サイクルの開始時刻も終了時刻も、その日の 00:00 より前であってはならず、終了時刻は開始時刻より前であってはなりません。
レスポンスパラメーター
パラメーター | データ型 | 例 | 説明 |
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 サンプルコード
次のサンプルコードの AccessKey ID と AccessKey シークレットの取得方法については、こちらをクリックしてください。
DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey シークレット
IAcsClient client = new DefaultAcsClient(profile);
// API リクエストを作成し、パラメーターを設定します
PushMultipleRequest request = new PushMultipleRequest();
request.setAppId("ONEX570DA89211721");
request.setWorkspaceId("test");
request.setDeliveryType(3L);
request.setTaskName("multipleTest");
request.setTemplateName("testTemplate");
// #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", "Bob");
templatekv.put("money", "200");
targetMsg.setTemplateKeyValue(JSON.toJSONString(templatekv));
// TargetMsg オブジェクトの数は最大 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
# AcsClient インスタンスを初期化します
client = AcsClient(
"AccessKey ID",
"AccessKey Secret",
"cn-hongkong"
);
# リクエストを初期化し、パラメーターを設定します
request = PushMultipleRequest.PushMultipleRequest()
request.set_endpoint("mpaas.cn-hongkong.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": "Bob",
"money": "200"
}
}
]
request.set_TargetMsgs(targets)
# レスポンスを出力します
response = client.do_action_with_exception(request)
print responseNode.js サンプルコード
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushMultipleRequest,PushMultipleRequestTargetMsg } = sdk;
// クライアントを作成します
const client = new Client({
accessKeyId: 'accessKeyId',
accessKeySecret: 'AccessKey Secret',
endpoint: 'mpaas.cn-hongkong.aliyuncs.com',
apiVersion: '2019-08-21'
});
// リクエストを初期化します
const request = new PushMultipleRequest();
request.appId = "ONEX570DA89211721";
request.workspaceId = "test";
request.templateName= "template1024";
const templatekv = {
name: 'Bob',
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-hongkong')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->multiPush();
} catch (\Exception $e) {
}
}
public function multiPush() {
$request = MPaaS::v20190821()->pushMultiple();
$result = $request->host("mpaas.cn-hongkong.aliyuncs.com")
// デバッグモードを有効にするかどうかを指定します
->debug(true)
->withAppId("ONEX570DA89211721")
->withWorkspaceId("test")
->withTemplateName("template1024")
->withDeliveryType(3)
->withTaskName("PHP マルチプッシュのテストタスク")
->withExpiredSeconds(600)
->withTargetMsg(
[
[
"Target" => "userid1024",
"MsgKey" => "" . time(),
"TemplateKeyValue" => json_encode([
"name" => "Bob",
"money" => "200",
])
]
]
)
->request();
}
}メッセージプッシュ - ブロードキャストプッシュ
このインターフェースを呼び出すと、すべてのデバイスに同じメッセージをプッシュできます。メッセージはテンプレートに基づいて作成されます。
インターフェースを呼び出す前に、次の操作を完了していることを確認してください。
MPS コンソールでプレースホルダーを含むテンプレートを作成していること。そうでない場合、パーソナライズされたメッセージプッシュ、つまり異なるターゲット ID に異なるメッセージをプッシュすることはできません。詳細については、「テンプレートの作成」をご参照ください。
必要な依存関係を導入していること。詳細については、「SDK の準備」をご参照ください。
リクエストパラメーター
パラメーター | データ型 | 必須 | 例 | 説明 |
classification | String | いいえ | 1 | vivo プッシュチャネルを介してプッシュされるメッセージのタイプを示します。
指定しない場合、デフォルトは 1 です。 |
taskName | String | はい | broadcastTest | プッシュタスクの名前 |
appId | String | はい | ONEX570DA89211721 | mPaaS アプリ ID |
workspaceId | String | はい | test | mPaaS ワークスペース |
deliveryType | Long | はい | 1 | ターゲット ID のタイプ。有効な値:
|
msgkey | String | はい | 1578807462788 | ビジネスメッセージの ID。この ID は、メッセージのトラブルシューティングに使用されます。ID はユーザー定義で、一意である必要があります。 |
expiredSeconds | Long | はい | 300 | メッセージの有効期間(秒)。 |
templateName | String | はい | broadcastTemplate | テンプレート名。テンプレートは MPS コンソールで作成できます。 |
templateKeyValue | String | いいえ | {"content":"お知らせ"} | テンプレートのパラメーター。マップ形式です。パラメーターは、 |
pushStatus | Long | いいえ | 0 | ログインステータス:
|
bindPeriod | int | いいえ |
説明
| |
unBindPeriod | Long | いいえ |
| |
androidChannel | Integer | いいえ | Android メッセージチャネル:
| |
strategyType | int | いいえ | 1 | プッシュ戦略:
デフォルトは 0 です。 |
StrategyContent | String | いいえ | プッシュ戦略の詳細(JSON 文字列)。 |
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 です。
サイクル期間は、開始日の 00:00 から終了日の 24:00 までです。
サイクルの開始時刻も終了時刻も、その日の 00:00 より前であってはならず、終了時刻は開始時刻より前であってはなりません。
レスポンスパラメーター
パラメーター | データ型 | 例 | 説明 |
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 サンプルコード
次のサンプルコードの AccessKey ID と AccessKey シークレットの取得方法については、こちらをクリックしてください。
DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
IAcsClient client = new DefaultAcsClient(profile);
PushBroadcastRequest request = new PushBroadcastRequest();
request.setAppId("ONEX570DA89211720");
request.setWorkspaceId("test");
request.setDeliveryType(2L);
request.setMsgkey(String.valueOf(System.currentTimeMillis()));
request.setExpiredSeconds(600L);
request.setTaskName("broadcastTest ");
request.setTemplateName("broadcastTemplate ");
// これはお知らせです:#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
# AcsClient インスタンスを初期化します
client = AcsClient(
"AccessKey ID",
"AccessKey Secret",
"cn-hongkong"
);
# リクエストを初期化し、パラメーターを設定します
request = PushBroadcastRequest.PushBroadcastRequest()
request.set_endpoint("mpaas.cn-hongkong.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()))
# レスポンスを出力します
response = client.do_action_with_exception(request)
print responseNode.js サンプルコード
const sdk = require('@alicloud/mpaas20190821');
const { default: Client, PushBroadcastRequest } = sdk;
// クライアントを作成します。
const client = new Client({
accessKeyId: 'accessKeyId',
accessKeySecret: 'AccessKey Secret',
endpoint: 'mpaas.cn-hongkong.aliyuncs.com',
apiVersion: '2019-08-21'
});
// リクエストを初期化します。
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-hongkong')
->asDefaultClient();
class Demo {
public function run() {
try {
$this->broadcastPush();
} catch (\Exception $e) {
}
}
public function broadcastPush(){
$request = MPaaS::v20190821()->pushBroadcast();
$result = $request->host("mpaas.cn-hongkong.aliyuncs.com")
// デバッグモードを有効にするかどうかを指定します。
->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 を指します。メッセージがユーザーによってプッシュされた場合、ターゲット 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-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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。MPS コンソールでプッシュタスクをクエリするために使用できます。 |
レスポンスパラメーター
パラメーター | データ型 | 例 | 説明 |
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-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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 アプリ 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-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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();
}プッシュタスクのクエリ
MPS コンソールで作成された、または API の呼び出しによってトリガーされたマルチ/ブロードキャストプッシュタスクをクエリします。
リクエストパラメーター
パラメーター | データ型 | 必須 | 例 | 説明 |
appId | String | はい | ONEX570DA89211721 | mPaaS アプリ 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 | JSON | レスポンスコンテンツ。 | |
taskId | String | 20927873 | タスク ID |
taskName | String | テストタスク | タスク名 |
templateId | String | 9108 | テンプレート ID |
templateName | String | テストテンプレート | テンプレート名 |
type | long | 3 | プッシュモード:
|
gmtCreate | long | 1630052750000 | 作成時間 |
サンプルコード
DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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("Tesk task");
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();
}プッシュタスク詳細のクエリ
MPS コンソールで作成された、または API の呼び出しによってトリガーされたマルチ/ブロードキャストプッシュタスクの詳細をクエリします。
リクエストパラメーター
パラメーター | データ型 | 必須 | 例 | 説明 |
appId | String | はい | ONEX570DA89211721 | mPaaS アプリ 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-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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 アプリ 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-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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 アプリ ID |
workspaceId | String | はい | test | mPaaS ワークスペース |
type | int | いいえ | 0 | スケジュールされたプッシュタスク ID のタイプ。デフォルトは 0 です。
|
uniqueIds | String | はい | 714613eb,714613ec,714613ed | スケジュールされたプッシュタスクの一意の ID。複数のタスク ID はカンマ(,)で区切ります。最大 30 個の ID を入力できます。 |
レスポンスパラメーター
パラメーター | データ型 | 例 | 説明 |
RequestId | String | B589F4F4-CD68-3CE5-BDA0-6597F33E23916512 | リクエスト ID |
ResultCode | String | OK | リクエスト結果コード |
ResultMessage | String | param is invalid | エラーの説明 |
ResultContent | String | {714613eb=1,714613ed=0} | キャンセルの結果:
|
サンプルコード
DefaultProfile.addEndpoint("cn-hongkong", "mpaas", "mpaas.cn-hongkong.aliyuncs.com");
// DefaultAcsClient インスタンスを作成し、初期化します
DefaultProfile profile = DefaultProfile.getProfile(
"cn-hangzhou", // リージョン ID
"******", // RAM アカウントの AccessKey ID
"******"); // RAM アカウントの AccessKey Secret
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();
}拡張パラメーター
拡張パラメーターは、メッセージ本文とともにクライアントに渡されます。これらのパラメーターを定義または処理できます。
拡張パラメーターには、次の 3 つのタイプがあります。
システム拡張パラメーター
これらの拡張パラメーターはシステムによって使用されています。これらのパラメーターの値を変更しないでください。システム拡張パラメーターには、
notifyType、action、silent、pushType、templateCode、channel、taskIdが含まれます。特定の意味を持つシステム拡張パラメーター
このタイプの拡張パラメーターはシステムによって使用されています。各パラメーターには特定の意味があります。これらの拡張パラメーターの値を設定できます。次の表に、特定の意味を持つ拡張パラメーターを示します。
キー
説明
sound
メッセージのカスタム着信音。このパラメーターの値は着信音のパスです。このパラメーターは、Xiaomi スマートフォンと iPhone にのみ適用されます。
badge
アプリアイコンのバッジ。その値は特定の数字です。この拡張パラメーターは、メッセージ本文とともにクライアントに渡されます。
Android デバイスの場合、バッジロジックを自分で実装する必要があります。
iOS デバイスの場合、システムは自動的にバッジロジックを実装します。メッセージがターゲットの携帯電話にプッシュされると、値で指定した番号がアプリアイコンのバッジに表示されます。
mutable-content
Apple Push Notification service(APNs)のカスタムプッシュ ID。このパラメーターを含むプッシュ通知は、iOS 10
UNNotificationServiceExtensionをサポートしていることを示します。このパラメーターを含まないプッシュ通知は、一般的なプッシュを示します。値を 1 に設定します。badge_add_num
Huawei プッシュチャネルに追加されたプッシュバッジの数。
badge_class
Huawei プッシュチャネルのデスクトップアイコンに対応するアクティビティクラス
big_text
大きなテキストスタイル。このパラメーターは固定値「1」です。その他の値は無効です。このパラメーターは、Xiaomi デバイスと Huawei デバイスにのみ有効です。
ユーザー定義の拡張パラメーター
上記のシステム拡張パラメーター以外のすべてのパラメーターは、ユーザー定義の拡張パラメーターです。ユーザー定義の拡張パラメーターは、メッセージ本文とともにクライアントに渡されます。これらのパラメーターを定義および処理できます。
結果コード
結果コード | メッセージ | 説明 |
100 | SUCCESS | 成功 |
-1 | SIGNATURE_MISMATCH | 署名が一致しません。 |
3001 | NEED_DELIVERYTOKEN | deliveryToken が空です。 |
3002 | NEED_FILE | ファイルが空です。 |
3003 | NEED_APPID_WORKSPACEID | アプリ ID またはワークスペースが空です。 |
3007 | APPID_WRONG | 無効なアプリ ID またはワークスペースです。 |
3008 | OS_TYPE_NOT_SUPPORTED | プッシュプラットフォームがサポートされていません。 |
3009 | DELIVERY_TYPE_NOT_SUPPORTED | deliveryType がサポートされていません。 |
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 | MPS セルフビルドプッシュチャネルは、すべてのユーザー(ログインユーザーとログアウトユーザーの両方を含む)を対象とするブロードキャストプッシュをサポートしていません。 |
3054 | DELIVERYTOKEN_INVALID | 無効な MPS セルフビルドチャネルトークンです。 |
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 |
|
9000 | SYSTEM_ERROR | システムエラーです。 |