プッシュAPIの作成
単一デバイスまたはデバイスリストに通知またはメッセージをプッシュします。
プッシュされるコンテンツは、JSONで表されるプッシュオブジェクトのみです。
これは最新バージョンのPush APIです。v4バージョンの改良点は以下の通りです:
- アクセス認可にHTTP Basic認証を使用しています。これにより、curl、ブラウザプラグインなどの一般的なHTTPツールを使用してAPIリクエスト全体を完了できます。
- プッシュコンテンツは完全にJSON形式です。
リクエストレート制限
サービスの安定性と公平性を確保するため、APIには呼び出し頻度の制限が設けられています。各AppKeyのQPS(毎秒クエリ数)制限は以下の通りです:
- 標準制限:1秒あたり最大500リクエスト
- 高度制限:有料プランのサブスクライバーで、有料AppKeyに更高のQPS制限が必要な場合は、営業チームに連絡してください:Sales@engagelab.com。
リクエスト方法
POST
呼び出しアドレス
インターフェースサービスアドレスは、データセンターの選択したアクセスポイントと一対一に対応しています。アプリケーションサービスアクセスポイントに対応する呼び出しアドレスを選択してください。
現在、EngageLabは2つのデータセンターアクセスポイントをデプロイしてサポートしており、異なるサービスアクセスポイント間のデータは完全に分離されています。製品作成時に選択したデータセンターアクセスポイントに応じて、呼び出しアドレスを選択できます。
POST v4/push
呼び出し検証
詳細については、認証方法のREST API概要の説明を参照してください。
リクエスト例
リクエストヘッダー
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
リクエストボディ
{
"from": "push",
"to": "all",
"body": {
"platform": "all",
"notification": {
"alert" :"Hello, Push!",
"android": {
"alert": "Hi, Push!",
"title": "Send to Android",
"builder_id": 1,
"extras": {
"newsid": 321
}
},
"ios": {
"alert": "Hi, MTPush!",
"sound": "default",
"badge": "+1",
"extras": {
"newsid": 321
}
}
},
"options": {
"time_to_live": 60,
"apns_production": false
}
},
"request_id": "12345678",
"custom_args":{
"Engagelab": "push to you"
}
}'
> POST /v4/push HTTP/1.1
> Authorization: Basic Yzk2ZjQyZTBkMmU2NjJlNDVkMDM1YWIxOmRmNGQ1OWU4NGVhYzJmOWQ1M2IzNmYxMg==
リクエストパラメータ
プッシュのパラメータ構造は、次の表の詳細の通りです:
キーワード | タイプ | オプション | 意味 |
---|---|---|---|
from | String | オプション | 現在のサービス送信者 |
to | StringまたはJSONオブジェクト | 必須フィールド | 送信対象 |
body | JSONオブジェクト | 必須フィールド | 送信リクエスト体 |
platform | StringまたはJSON配列 | 必須フィールド | プッシュプラットフォーム |
notification | JSONオブジェクト | オプション | |
message | JSONオブジェクト | オプション | |
request_id | String | オプション | 顧客定義のオプションフィールドで、顧客はどのリクエストの応答を返しているかを識別するために使用します。 |
custom_args | JSONオブジェクト | オプション | 顧客定義のオプションフィールドで、コールバック時に顧客に返されます。値には最大128文字が含まれます。 |
from
現在のサービス送信者、String型、オプションフィールド。
リクエスト例
{
"from":"push"
}
to
プッシュデバイスオブジェクトは、プッシュを送信できるデバイスのリストを示します。プッシュデバイスオブジェクトを確認するため、App Pushは、エイリアス、タグ、登録ID、サブグループ、ブロードキャストなどのさまざまな方法を提供しています。
プッシュ対象
ブロードキャスト以外に、機器を選択する方法はいくつかあります。以下の通りです:
キーワード | タイプ | 意味 | 説明 | 注意事項 |
---|---|---|---|---|
all | String | ブロードキャスト送信 | すべてのデバイスにプッシュ | プッシュ対象は過去365日間アクティブだったデバイスです。 |
tag | JSON配列 | タグ | 配列。複数のタグ間の関係はORで、つまり結合を取ります。 | タグを使用して大規模なデバイス属性、ユーザー属性サブグループを実行します。 |
tag_and | JSON配列 | タグAND | 配列。複数のタグはAND関係で、つまり交差を取ります。 | タグとの区別に注意して、一度に最大20個までです。 |
tag_not | JSON配列 | タグNOT | 配列。複数のラベル間で、最初に複数のラベルの結合セットを取り、次にその結果の補集合を取ります。 | 一度に最大20個までプッシュします。 |
alias | JSON配列 | エイリアス | 配列。複数のエイリアスはOR関係で、つまり結合を取ります。 | エイリアスでユーザーを識別します。 |
registration_id | JSON配列 | 登録ID | 配列。複数の登録IDはOR関係で、つまり結合を取ります。 | デバイス識別。一度に最大1000個までプッシュします。 |
live_activity_id | String | リアルタイムアクティビティ識別子 | iOS SDKのliveActivityIdの値に対応します。 | リアルタイムアクティビティを更新する場合は必須です。 |
配列内の複数の値間の暗黙的な関係はORで、つまり結合を取ります。ただし、tag_andは異なり、配列内の複数の値間の関係はANDで、つまり交差を取ります。
tag_notは単独で使用することはできません。少なくとも他の5種類のうちの1つが必要です。値配列の長さが0の場合、そのタイプは存在しません。
これらのタイプは共存できます。共存する場合の複数の多項式間の暗黙的な関係はANDで、つまり交差を取ります。例:
"to" : {"tag" : [ "tag1", "tag2"], "tag_and" : ["tag3", "tag4"], "tag_not" : ["tag5", "tag6"] }
最初に「tag」フィールドの結果を計算tag1またはtag2 = A
;
次に「tag_and」フィールドの結果を計算tag3かつtag4 = B
;
次に「tag_not」フィールドの結果を計算not (tag5またはtag6) = C
;
「to」の最終結果はAかつBかつC
です。
例
- 全員にプッシュ(ブロードキャスト):
{
"to": "all",
}
- 複数のタグにプッシュ(いずれかのタグ内に該当する限り):深圳、広州、北京
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou",
"Beijing"
]
}
}
- 複数のタグにプッシュ(複数のタグの範囲内に同時に存在する必要があります):深圳に在住し、「女性」
{
"to":{
"tag_and":[
"Shenzhen",
"female"
]
}
}
- 複数のエイリアスにプッシュ:
{
"to":{
"alias":[
"4314",
"892",
"4531"
]
}
}
- 複数の登録IDにプッシュ:
{
"to": {
"registration_id": [
"4312kjklfds2",
"8914afd2",
"45fdsa31"
]
}
}
- 複数のタイプのプッシュ対象を同時に指定してプッシュ:深圳または広州に在住し、「女性」「会員」
{
"to":{
"tag":[
"Shenzhen",
"Guangzhou"
],
"tag_and":[
"female",
"members"
]
}
}
- ライブアクティビティメッセージをプッシュ
{
"to": {
"live_activity_id": "LiveActivity-1"
}
}
Body
送信リクエストボディ。サポートされているフィールドは以下の通りです:
キーワード | タイプ | オプション | 意味 |
---|---|---|---|
platform | StringまたはJSON配列 | 必須 | プッシュプラットフォーム |
notification | JSONオブジェクト | オプション | |
message | JSONオブジェクト | オプション | |
live_activity | JSONオブジェクト | オプション | |
options | JSONオブジェクト | オプション | プッシュパラメータ |
Platform
MTPushは現在、AndroidおよびiOSプラットフォームのプッシュをサポートしています。キーワードはそれぞれ「android」、「ios」です。
対象プラットフォームがiOSの場合、optionsのapns_productionフィールドでプッシュ環境を設定する必要があります。trueは開発環境をプッシュすることを意味し、Falseは開発環境をプッシュすることを意味します。
すべてのプラットフォームにプッシュ:
{ "platform" : "all" }
特定のプッシュプラットフォームの指定:
{
"platform": [
"android",
"ios"
]
}
Notification
「Notification」オブジェクトは、プッシュのエンティティコンテンツオブジェクトの1つ(もう1つは「Message」)で、「Notification」としてクライアントにプッシュされます。
キーワード | タイプ | オプション | 意味 | 説明 |
---|---|---|---|---|
alert | StringまたはJSONオブジェクト | 必須フィールド | 内容 | プラットフォームの下にandroidまたはiosのalertを指定しない場合、ここのalertが使用されます。 |
android | JSONオブジェクト | オプション | androidプラットフォームプロパティ | Androidプラットフォームプッシュパラメータについては、androidの説明を参照してください。 |
ios | JSONオブジェクト | オプション | iosプラットフォームプロパティ | iosプラットフォームプッシュパラメータについては、iosの説明を参照してください。 |
Alert
この場所(notificationオブジェクトの直下)の「alert」プロパティはショートカット定義であり、プラットフォーム間でalertメッセージが同じ場合、プラットフォームの下でalertを定義しなくても、ここが優先されます。各プラットフォームに定義がある場合は、ここの定義を上書きします。
{
"notification" : {
"alert" : "Hello, Push!"
}
}
上で定義されたnotificationオブジェクトは、「platform」で指定された複数のプラットフォームにプッシュされ、すべて同じnotification alertメッセージを持ちます。
Android
Androidプラットフォームの通知は、MTPush SDKによって特定の通知バースタイルに従って表示されます。サポートされているフィールドは以下の通りです:
キーワード | データ型 | オプション | 意味 | 説明 |
---|---|---|---|---|
alert | StringまたはJSONオブジェクト | 必須 | 通知内容 | |
title | String | オプション | 通知タイトル | |
builder_id | Int | オプション | 通知バースタイルID | Android SDKはカスタム通知レイアウトを設定でき、このフィールドはどのスタイルを使用するかを指定します。 |
channel_id | String | オプション | Android通知チャネルID | 最大1000バイト、Android 8.0から、通知チャネルを構成できます。このフィールドは、チャネルIDに基づいて通知バーの表示効果を指定します。 |
priority | Int | オプション | 通知バー表示優先度 | デフォルトは0、範囲は-2~2です。 |
category | String | オプション | 通知バーエントリフィルタリングまたはソート | これは完全にメーカーのcategoryに対する処理戦略に依存します。 |
style | Int | オプション | 通知バースタイルタイプ | 通知バースタイルタイプを指定するために使用され、デフォルトは0です。 |
big_text | String | オプション | 大きなテキスト通知バースタイル | |
inbox | JSONObject | オプション | テキスト項目通知バースタイル | {"box0":"content1"} 。 |
big_pic_path | String | オプション | 大きな画像通知バースタイル | |
extras | JSONオブジェクト | オプション | 追加フィールド | ビジネス用途のためにJSON形式でカスタムKey/Value情報を定義します。 |
intent | JSONオブジェクト | オプション | ナビゲーションのターゲットページを指定(推奨) | intentフィールドを使用して、通知バーをクリックしたときのナビゲーション先のターゲットページを指定します。intentフィールドを入力することを推奨します。そうしないと、通知をクリックしてもナビゲーションアクションがない場合があります。このフィールドは3種類をサポートしています:intent:#Intent;action=action path;component= package name /full activity name;end intent:#Intent;action=android.intent.action.MAIN;end (固定アドレス)scheme://test?key1=val1&key2=val2 |
large_icon | String | オプション | 大きな通知アイコン | |
small_icon | String | オプション | 小さな通知アイコン | |
sound | String | オプション | サウンド | |
badge_add_num | Int | オプション | バッジ番号の増分値を設定、元のバッジ番号に追加する | |
badge_class | String | オプション | デスクトップアイコンに対応するアプリケーションエントリアクティビティクラス、例:「com.test.badge.MainActivity」 | |
display_foreground | String | オプション | アプリがフォアグラウンドにある場合、通知を表示するかどうか | |
group_id | String | オプション | メッセージグループID | メッセージグループ化の一意の識別子で、メッセージの折りたたみ効果を制御するために使用されます。MTPush Android SDKバージョン5.0.1以降でサポートされています。 |
{
"notification": {
"android": {
"alert": "hello, MTPush!",
"title": "Push test",
"builder_id": 3,
"style": 1,
"big_text": "big text content",
"inbox":JSONObject,
"big_pic_path": "picture url",
"priority": 0,
"category": "category str",
"large_icon": "http://pushapi-sgp.engagelab.comlargeIcon.jpg",
"small_icon": "http://www.small.com/small_icon.jpg",
"intent": {
"url": "intent:#Intent;component=push.pushapi-sgp.engagelab.com/com.example.mtpushdemo.SettingActivity;end"
},
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
iOS
iOSプラットフォームのAPNs通知。
通知コンテンツはMTPushエージェントによってApple APNsサーバーに送信され、iOSデバイスにシステム通知として表示されます。
通知コンテンツはAPNs仕様を満たしており、以下のフィールドをサポートしています:
キーワード | タイプ | オプション | 意味 | 説明 |
---|---|---|---|---|
alert | StringまたはJSONオブジェクト | 必須フィールド | 通知内容 | |
sound | StringまたはJSONオブジェクト | オプション | 通知サウンド | |
badge | IntまたはString | オプション | アプリケーションの角マーカー | |
content-available | Boolean | オプション | プッシュでウェイクアップ | 詳細については、以下を参照してください:プッシュ時に「content-available」:trueは、Background Remote Notificationであることを意味します。そうでない場合は、通常のRemote Notificationです:Background Remote Notification |
mutable-content | Boolean | オプション | 通知拡張 | iOS 10に追加されたNotification Service Extension機能は、各APNsメッセージの配信状況を報告するためのものです。この機能を使用するには、クライアントがService Extensionインターフェースを実装する必要があり、サーバー側でmutable-contentフィールドを使用して設定を完了する必要があります。 |
category | String | オプション | iOS 8でのみサポートされています。APNsペイロードの「category」フィールドの値を設定します。 | |
extras | JSONオブジェクト | オプション | 拡張フィールド | ここでKey/value情報はビジネス用途のためにカスタマイズされています。 |
thread-id | String | オプション | 通知グループ | iOSリモート通知はこのプロパティによってグループ化されるため、同じthread-idの通知はグループ化されます。 |
interruption-level | String | オプション | 優先度と配信時間の中断レベルの通知 | iOS 15の場合、通知レベルはactive、critical、passive、timeSensitiveのいずれかにする必要があります。UNNotificationInterruptionLevelを参照してください。 |
MTPushのiOS通知はAPNsサーバーに転送されます。 MTPushの通知長は4000バイトに制限されています。 MTPushはプッシュ時にutf-8エンコーディングを使用するため、1つの漢字は長さが3バイトを占めます。
サーバー側の配信例:
{
"notification": {
"ios": {
"alert": "hello, Push!",
"sound": "sound.caf",
"badge": 1,
"extras": {
"news_id": 134,
"my_key": "a value"
}
}
}
}
クライアントが受信したメッセージ:
{
"_j_msgid" = 813843507;
aps = {
alert = "hello,Push!";
badge = 1;
sound = "sound.caf";
};
"my_key" = "a value";
"news_id" = 134;
}
Message
アプリ内メッセージ。カスタムメッセージ、パススルーメッセージとも呼ばれます。
- この部分は通知バーに表示されず、MTPush SDKがメッセージコンテンツを受信してAppに渡します。
- iOSは、アプリがフォアグラウンドにある状態で、プッシュインアプリメッセージチャネル(APNSではない)でこの部分を取得します。
サポートされているフィールドは以下の通りです:
キーワード | タイプ | オプション | 意味 |
---|---|---|---|
msg_content | StringまたはJSONオブジェクト | 必須フィールド | メッセージ内容 |
title | String | オプション | メッセージタイトル |
content_type | String | オプション | メッセージコンテンツタイプ |
extras | JSONオブジェクト | オプション | JSON形式のオプションパラメータ |
例:
{
"message": {
"msg_content": "Hi,Push",
"content_type": "text",
"title": "msg",
"extras": {
"key": "value"
}
}
}
Live_activity
注意:リアルタイムアクティビティメッセージにはiOS P8証明書の使用が必要で、WebPortalのiOS認証方法設定で「トークン認証設定」を選択することに対応します。
リアルタイムアクティビティメッセージコンテンツ本体には以下のフィールド情報が含まれています:
キーワード | タイプ | オプション | 説明 |
---|---|---|---|
ios | JSONオブジェクト | 必須 | 詳細なフィールドについては、セクションiOS JSONオブジェクトを参照してください。 |
iOS JSONオブジェクト
キーワード | タイプ | オプション | 説明 |
---|---|---|---|
event | string | 必須 | 作成:「start」、更新:「update」、終了:「end」;event=startの場合に必須 |
attributes-type | string | オプション | リアルタイムアクティビティタイプ、開発者によって定義された値;event=startの場合に必須 |
content-state | JSONオブジェクト | 必須 | リアルタイムアクティビティ動的コンテンツ、クライアントSDK値と一致する必要があります(Appleのcontent-stateフィールドに対応)。 |
alert | JSONオブジェクト | オプション | 詳細については、セクションiOS alert JSONオブジェクトを参照してください。 |
dismissal-date | int | オプション | リアルタイムアクティビティの終了の表示時間。 |
attributes | JSONオブジェクト | オプション | リアルタイムアクティビティ静的コンテンツ、クライアントSDK値と一致する必要があります(Appleのattributesフィールドに対応)。 |
stale-date | int | オプション | リアルタイムアクティビティの表示の有効期限;現在の時間より少ない場合、アクティビティは更新されません。 |
relevance-score | int | オプション | インテリジェンスアイランドでのリアルタイムアクティビティの表示の優先度、値は1~100、アクティビティの重要性と正の相関があります;指定されていない場合はデフォルトで最高です。 |
apns-priority | int | オプション | 5または10、デフォルトは10;apns-priority=5の通知はAppleのレート制限を消費せず、制限を超えると通知が制限されます。 |
iOS alert JSONオブジェクト
キーワード | タイプ | オプション | 説明 |
---|---|---|---|
title | string | オプション | Apple Watchメッセージに表示されるタイトル。 |
body | string | オプション | Apple Watchメッセージに表示される内容。 |
sound | string | オプション | 通知サウンド。 |
- Engagelab PushのiOSリアルタイムアクティビティメッセージはAppleサーバーに転送されます。Appleは、リアルタイムアクティビティメッセージ(ActivityKit)の動的更新データが4096バイトを超えないように要求しています。
- Engagelab Pushは、リパッケージ要件とセキュリティ冗長性を考慮して、「iOS」内の「live_activity」パラメータ内の総長と波括弧内の内容が3584バイトを超えないように規定しています。JPushはUTF-8エンコーディングを使用しているため、1つの漢字は3バイトを占めます。
リアルタイムアクティビティプッシュ例
リアルタイムアクティビティに使用されるattributes-typeとlive_activity_idは開発者SDKから報告されます。リアルタイムアクティビティを使用する前に、デバイスのプッシュ開始トークンと更新トークンを報告する必要があります。詳細な手順については、Appleメーカーのリアルタイムアクティビティの説明を参照してください。
作成
{ "from": "push", "to": { "registration_id": [ "161a3797c816b134042" ] }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "start", "content-state": { "eventStr": "hello", "eventTime":1685952000 }, "attributes": { "name": "1", "number": 2, "tag": "mytag" }, "alert": { "title": "hello", "body": "welcome" }, "attributes-type": "my_la_type", "relevance-score": 100, "apns-priority": 100 } } }, "request_id": "12345678", "custom_args": "12345678" }{ "from": "push", "to": { "registration_id": [ "161a3797c816b134042" ] }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "start", "content-state": { "eventStr": "hello", "eventTime":1685952000 }, "attributes": { "name": "1", "number": 2, "tag": "mytag" }, "alert": { "title": "hello", "body": "welcome" }, "attributes-type": "my_la_type", "relevance-score": 100, "apns-priority": 100 } } }, "request_id": "12345678", "custom_args": "12345678" }
このコードブロックはフローティングウィンドウ内に表示されます更新
{ "from": "push", "to": { "live_activity_id": "my_la_id" }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "update", "content-state": { "eventStr": "test_live", "eventTime": 198 }, "alert": { "title": "123411", "body": "123411" } } } }, "request_id": "12345678", "custom_args": "12345678" }{ "from": "push", "to": { "live_activity_id": "my_la_id" }, "body": { "platform": "ios", "live_activity": { "ios": { "event": "update", "content-state": { "eventStr": "test_live", "eventTime": 198 }, "alert": { "title": "123411", "body": "123411" } } } }, "request_id": "12345678", "custom_args": "12345678" }
このコードブロックはフローティングウィンドウ内に表示されます
Voip
iOS VOIP機能。このタイプは他のiOSメッセージタイプとの共存をサポートしていません。リクエストパラメータ構造を参照してください:
{
"from": "push",
"to": {
"registration_id": [ "1a0018970a91da03de5" ]
},
"request_id": "12345",
"custom_args": "12345",
"body": {
"platform": "ios",
"voip": {
"key": "value // APPに渡される任意のカスタムキー/値のペア"
}
}
}
Options
現在のプッシュ通知オプションには以下が含まれます:
キーワード | タイプ | オプション | 意味 | 説明 |
---|---|---|---|---|
time_to_live | IntまたはString | オプション | オフラインメッセージ保持時間(秒) | プッシュ時にユーザーがオフラインの場合、メッセージは指定された期間保持され、オンラインになったときに再びプッシュされます。デフォルトは86400(1日)、最大は15日です。キャリアがサポートする最大値が設定値より小さい場合は、キャリアの最大値が使用されます。0に設定すると、オフラインメッセージは保持されません。プッシュ時にオンラインのユーザーのみがメッセージを受信します。 |
override_msg_id | Long | オプション | オーバーライドするメッセージID | 現在のプッシュが以前のプッシュをオーバーライドする場合は、以前のプッシュのmsg_idを入力すると、オーバーライドの効果が得られます。この場合、msg_idはオフラインで更新されたコンテンツを受信します。Androidユーザーがすでにメッセージを受信していて、通知が通知バーからクリアされていない場合でも、新しいコンテンツが以前の通知を上書きします。オーバーライド機能は1日間有効です。オーバーライドの指定時間内にmsg_idが存在しない場合、7006エラーが返され、無効なメッセージオーバーライド操作を示し、現在のメッセージはプッシュされません。このフィールドはAndroidにのみ有効で、Engagelabチャネル、Xiaomiチャネル、Meizuチャネル、OPPOチャネル、FCMチャネル、Huaweiチャネル(EMUI10以上のデバイス)のみをサポートしています。 |
apns_production | Boolean | オプション | APNs本番環境 | このフィールドはiOS Notificationsにのみ有効です。 |
apns_collapse_id | String | オプション | iOS通知を更新する識別子 | 新しいAPNs通知がNotification Centerの既存の通知と同じapns-collapse-idに一致する場合、新しい通知コンテンツがそれを更新し、Notification Centerの先頭に配置されます。コラプスIDの長さは64バイトを超えてはなりません。 |
big_push_duration | Int | オプション | ペースドプッシュの期間(分) | スロープッシュとも呼ばれ、元の高速プッシュ速度を低下させ、指定されたn分間にわたってターゲットユーザーにプッシュを均等に配布します。最大は1440です。 |
multi_language | jsonオブジェクト | オプション | 多言語プッシュ設定 | 多言語プッシュコンテンツの適応設定については、詳細についてはmulti_languageを参照してください。 |
third_party_channel | JSONオブジェクト | オプション | Androidメーカーチャネル構成情報 | メーカーチャネルを構成したユーザーにのみ有効なパラメータについては、詳細についてはthird_party_channelを参照してください。 |
classification | Int | オプション | プッシュメッセージ分類設定 | EngageLabは指定されたメッセージタイプを判断または較正しません。指定されていない場合は、デフォルトで0になります。0:運用メッセージを表します。1:システムメッセージを表します。 |
voice_value | String | オプション | 音声ファイル値 | 複数のパラメータはコンマで区切られ、「#」は解析が必要であることを示します。それ以外の場合は、デフォルトで言語ファイルと直接一致します。数値に小数点が含まれている場合、アップロードされたファイル名はpoint.mp3でなければならないことに注意してください。現在サポートされている言語は「en」(英語)、「zh-Hans」(簡体字中国語)、「zh-Hant」(繁体字中国語)です。プッシュコンテンツの指定された言語が対応する言語ルールと一致しない場合、プッシュコンテンツは音声ブロードキャストに変換されません。 |
enhanc_message | Bool | オプション | アプリ内メッセージ表示を有効にする | true - 強化を有効にする;false - 強化を無効にする。通知権限が無効になっている場合、この機能を有効にすると、ユーザーがアプリをフォアグラウンドで実行しているときに通知バーメッセージコンテンツがアプリ内メッセージとして表示されます。この機能のデフォルト値はfalseで、明示的に有効にした場合にのみアクティブになります。 |
plan_id | String | オプション | プッシュプラン識別子 | まずプラン識別を作成する必要があります。コンソールまたはAPIを通じて作成できます。 |
cid | String | オプション | プッシュリクエスト識別子、重複プッシュを防ぐために使用 | 文字、数字、アンダースコア、マイナス記号のみが許可され、長さは64文字を超えません。このフィールドは同じAppKeyの下で一意でなければならないことに注意してください。重複プッシュを回避する方法 |
Multi_language
このフィールドは、EngageLab Pushサービスの多言語プッシュ機能
能に使用されます。さまざまな言語のユーザーにカスタマイズされた通知コンテンツを送信できます。プッシュリクエストで複数の言語とそれに対応するメッセージコンテンツ、タイトル、iOSサブタイトルを指定することで、ユーザーの言語設定に基づいて適切なプッシュ通知を送信できます。
リクエストパラメータ
キーワード | タイプ | オプション | 意味 | 説明 |
---|---|---|---|---|
en | string | オプション | 言語キー | ユーザーの言語に対応、キーコードについては付録を参照。 |
content | string | オプション | メッセージコンテンツ | ユーザーの言語に基づいて、notification.android.alert、notification.ios.alert、notification.web.alert、message.msg_contentのデータを置き換えます。 |
title | string | オプション | メッセージタイトル | ユーザーの言語に基づいて、notification.android.title、notification.ios.alert、notification.web.title、message.titleのデータを置き換えます。 |
ios_subtitle | string | オプション | iOSサブタイトル | ユーザーの言語に基づいて、notification.ios.alertのデータを置き換えます。 |
リクエスト例
HTTPリクエスト方法: POST
リクエストURL: /v4/grouppushまたは/v4/push
リクエストデータ形式: JSON
リクエスト例:
{
"options": {
"multi_language": {
"en": {
"content": "",
"title": "",
"ios_subtitle": ""
}
}
}
}
リクエスト例
成功レスポンス:
{
}
失敗レスポンス:
{
"code": 400,
"data": "",
"message": "エラーメッセージ"
}
Third_party_channel
このフィールドはAndroidベンダーチャネルの個別情報を入力するために使用され、キーは7つのAndroidベンダーチャネル(xiaomi、huawei、meizu、oppo、vivo、fcm、honor)のみをサポートしており、そのうちの1つまたは複数を同時に存在させることができます。各ベンダータイプのKEYには現在以下のオプションを含めることができます:
リクエストパラメータ
キーワード | タイプ | オプション | 意味 | 説明 |
---|---|---|---|---|
distribution_new | String | 必須オプション | _ | Engagelabとベンダーチャネルが共存する場合、ダウンリンクの優先度を設定します。 |
channel_id | String | オプション | 通知バーメッセージカテゴリ | channel_id フィールドはAndroidでも使用できます。このフィールドに値が入力されている場合は、これが優先されます。それ以外の場合は、android.channel_idの定義が適用されます。category およびnotify_level フィールドを入力することを推奨します。 |
classification | Int | オプション | 通知バーメッセージカテゴリ | vivo携帯電話メーカーの通知バーメッセージカテゴリで、入力されていない場合はデフォルトで0です。 |
pushMode | Int | オプション | vivoプッシュモード | デフォルトは0です。詳細についてはvivo pushModeを参照してください。テストプッシュを使用するには、vivoバックエンドで手動でテストデバイスのIDを構成する必要があります。 |
importance | String | オプション | Huawei/Glory通知バーメッセージインテリジェント分類 | Huawei携帯電話メーカーの通知バーメッセージインテリジェント分類に適応するため、Huaweiのimportanceフィールドに対応し、入力されていない場合はデフォルトで「NORMAL」です。参照:Huawei通知メッセージインテリジェント分類。 |
urgency | String | オプション | Huaweiベンダー定義のメッセージ優先度 | Huawei携帯電話ベンダーのカスタムメッセージの優先度に適応するため。 |
category | String | オプション | Huaweiベンダーカスタムメッセージシナリオロゴ | Huawei、vivo、OPPOデバイスの通知要件に適応するため、このフィールドは「クラウド通知」メッセージタイプを識別し、通知アラート方法を決定し、特定のタイプのメッセージの配信を加速するために使用されます。 |
notify_level | Int | オプション | OPPO通知バーメッセージアラートレベル | 1 は通知バー、2 は通知バー+ロックスクリーン、16 は通知バー+ロックスクリーン+バナー+振動+リングトーン。 notify_level フィールドは「サービスと通信」メッセージにのみ適用されます。 notify_level パラメータを使用する場合は、category パラメータを必ず含める必要があります。 |
small_icon_uri | String | オプション | ベンダーメッセージの小さなアイコンスタイル | 現在Xiaomi/Huaweiメーカーをサポートしています。 |
small_icon_color | String | オプション | Xiaomiメーカーの小さなアイコンスタイルの色 | Xiaomiメーカーのメッセージの小さなアイコンスタイルの色に適応するため、入力されていない場合はデフォルトで灰色です(Xiaomi公式の後続ではカスタム小さなアイコンをサポートしなくなり、開発者はXiaomiの小さなアイコン関連機能を続けて使用しないことを推奨します)。 |
big_text | String | オプション | ベンダーメッセージの大きなテキストスタイル | |
only_use_vendor_style | Boolean | オプション | 独自のチャネル設定スタイルを使用するかどうか | 独自のチャネルで設定されたスタイルのみを使用し、androidで設定されたスタイルを使用しないかどうか、デフォルトはfalseです。 |
マルチベンダーチャネル戦略を統一し、構成ロジックを簡素化するため、
distribution_new
フィールドの構成方法は以下のように調整されました。 従来のベンダーレベルの構成は引き続き有効ですが、将来の互換性リスクを回避するため、段階的にグローバル構成に移行することを推奨します。(新しいルールは2025.04.03から有効になります):
- 構成優先度(新しいルール)
- 第一優先: グローバル構成
third_party_channel.distribution_new
(推奨される新しい方法)
例:"distribution_new": "pns_mtpush"
- 第二優先: ベンダーレベルの構成
third_party_channel.{vendor_key}.distribution_new
(従来の互換方法)
グローバル構成が設定されていない場合にのみ有効になります - 無構成: デフォルト戦略:pns_mtpush
- 第一優先: グローバル構成
互換性に関する注意事項
- 互換性保証:グローバルフィールドが設定されていない場合、従来のベンダーレベルの構成は依然として機能し、既存のサービスに影響を与えません。
- 競合解決:グローバルフィールドとベンダーレベルのフィールドの両方が構成されている場合、グローバル値のみが読み取られ、ベンダーレベルの構成は無視されます。
- 長期計画:ベンダーレベルの
distribution_new
は将来のバージョンで廃止される可能性があります。可能であれば事前に適応するようにしてください。
リクエスト例
{
"third_party_channel": {
"distribution_new": "pns_mtpush",
"xiaomi": {
"channel_id": "*******",
"small_icon_uri": "http://f6.market.xiaomi.com/download/MiPass/x/x.png",
"small_icon_color": "#ABCDEF"
},
"huawei": {
"importance": "NORMAL",
"small_icon_uri": "https://xx.com/xx.jpg",
"only_use_vendor_style": true
},
"oppo": {
"channel_id": "*******",
"large_icon": "3653918_5f92b5739ae676f5745bcbf4"
},
"vivo": {
"pushMode": 0
}
}
}
Request_id
リクエストIDは、顧客定義のオプションフィールドです。クライアントはどのリクエストの応答を返しているかを識別するために使用します。
リクエスト例
{
"request_id":"12345678"
}
戻り例
{
"msg_id": "1225764",
"request_id": "12345678"
}
Custom_args
顧客定義のオプションフィールドで、応答では返されず、コールバックで返されます。
リクエスト例
{
"custom_args":{
"args1": "args1"
}
}
戻りパラメータ
成功した戻り
フィールド | タイプ | オプション | 説明 |
---|---|---|---|
request_id | String | オプション | リクエストで送信されたカスタムIDは、応答でそのまま返されます。 |
message_id | String | 必須 | メッセージIDで、メッセージを一意に識別します。 |
< HTTP/1.1 200 OK
< Content-Type: application/json
{"request_id":"18","msg_id":"1828256757"}
戻りに失敗
httpステータスコードは4xxまたは5xxで、応答ボディには以下のフィールドが含まれています:
フィールド | タイプ | オプション | 説明 |
---|---|---|---|
code | int | 必須 | エラーコード、エラーコード説明を参照 |
message | String | 必須 | エラー詳細 |
{
"error":{
"code": 3002,
"message": "Push.template field must be set correctly when type is template"
}
}
呼び出し戻り
HTTPステータスコード
参照ドキュメント:HTTP-ステータスコード
エラーコード
コード | 説明 | 詳細な説明 | HTTPステータスコード |
---|---|---|---|
グローバルエラーコード | |||
20101 | 無効なプッシュパラメータ | 登録IDが無効であるか、現在のappkeyに属していません | 400 |
21001 | HTTP Postメソッドのみをサポート | Getメソッドをサポートしていません | 405 |
21002 | 必須パラメータが不足しています | 修正する必要があります | 400 |
21003 | 無効なパラメータ値 | 修正する必要があります | 400 |
21004 | 検証に失敗しました | 修正する必要があります、呼び出しの検証を参照してください | 401 |
21005 | メッセージ本体が大きすぎます | 修正する必要があります、Notification+Messageの長さ制限は2048バイトです | 400 |
21008 | 無効なapp_keyパラメータ | 修正する必要があります、送信されたappkeyとアプリケーション情報を注意深く比較し、余分なスペースがないか確認してください | 400 |
21009 | 内部システムエラー | サポートチームに連絡してください | 400 |
21011 | 適切なプッシュターゲットが見つかりません | 'to'フィールドを確認してください | 400 |
21015 | リクエストパラメータの検証に失敗しました | 予期しないパラメータが存在します | 400 |
21016 | リクエストパラメータの検証に失敗しました | パラメータタイプまたはパラメータ長が制限を超えています | 400 |
21030 | 内部サービスのタイムアウト | 後で再試行してください | 503 |
21050 | 無効なlive_activityイベントパラメータ | イベントパラメータは「start」、「update」、または「end」でなければなりません | 400 |
21051 | 無効なlive_activityオーディエンスパラメータ | リアルタイムアクティビティ作成中、プッシュターゲットはブロードキャストまたは登録ベースのみ可能です | 400 |
21052 | 無効なlive_activity attributes-typeパラメータ | event=startの場合、attributes-typeは空にすることができません | 400 |
21053 | 無効なlive_activity content-stateパラメータ | content-stateは空にすることができません | 400 |
21054 | live_activityパラメータエラー、通知とカスタムメッセージは同時に許可されていません | voip、message、notification、live_activityは共存できません | 400 |
21055 | live_activity iosの非p8証明書 | リアルタイムアクティビティはp8証明書のみをサポートしています | 400 |
21056 | live_activityはiosプラットフォームのみをサポートしています | platformパラメータはiosでなければなりません | 400 |
21057 | voipメッセージは他のメッセージタイプと共存することはできません | voip、message、notification、live_activityは共存できません | 400 |
21058 | voipはiosプラットフォームのみをサポートしています | platformパラメータはiosでなければなりません | 400 |
23006 | パラメータエラー | 固定レートプッシュbig_push_durationが最大値1440を超えています | 400 |
23008 | インターフェースのレート制限 | 単一アプリケーションのプッシュインターフェースQPSが制限に達しました(500 qps) | 400 |
23009 | プッシュ権限エラー | 現在のプッシュIPアドレスがアプリケーションIPホワイトリストに含まれていません | 400 |
27000 | 内部メモリエラー | 再試行してください | 500 |
27001 | パラメータエラー | 検証情報が空です | 401 |
27008 | パラメータエラー | third_party_channel内のdistributionが空ではないのに、notificationのalertコンテンツが空です | 401 |
27009 | パラメータエラー | third_party_channel内のdistributionの形式が無効または空です | 401 |
21038 | プッシュ権限エラー | VIPの有効期限が切れているか、アクティブ化されていません | 401 |
21306 | パラメータエラー | 通知メッセージとカスタムメッセージを同時にプッシュすることはできません | 401 |
21059 | パラメータエラー | このメッセージタイプはbig_push_durationをサポートしていません | 401 |
プッシュ制限
メーカーチャネル | タイトル長 | コンテンツ長 | 敏感語 | その他の注意事項 |
---|---|---|---|---|
Engagelabチャネル | < 50文字 | 制限なし、但しメッセージ本体の総サイズを4000バイトに制限 | - | MTPushのNotificationの長さは4000バイトに制限されています。 |
Huaweiチャネル | < 40文字 | < 1024文字 | 政府、指導者、台湾独立などに関するコンテンツを禁止 | デフォルトの[マーケティング通知]権限はサイレント通知です;サイレントプッシュにはサウンド、振動などのアラートはありません。 |
Gloryチャネル | 制限なし、但しメッセージ本体の総サイズ < 4096バイト | 制限なし、但しメッセージ本体の総サイズ < 4096バイト | 政府、指導者、台湾独立などに関するコンテンツを禁止 | - |
Phantomチャネル | < 32文字 | < 100文字 | 「#」などの特殊文字を禁止 | メッセージはMeizu携帯電話の右上隅の[Meizuメッセージボックス]に保存される場合があります。漢字と英字はどちらも1文字としてカウントされます。 |
Xiaomiチャネル | < 50文字 | < 128文字 | 「#」、「>>」などの特殊文字を禁止 | メッセージは通知バーの重要でない通知に表示される場合があります。漢字と英字はどちらも1文字としてカウントされます。 |
OPPOチャネル | < 32文字 | < 200文字 | まだ説明がありません | 通知権限はデフォルトで無効になっています。漢字と英字はどちらも1文字としてカウントされます。 |
vivoチャネル | < 40文字 | < 100文字 | 「#」などの特殊文字や正式なメッセージ(例:単なる数字、単なる英語など)を禁止 | 英字は1文字としてカウントされ、漢字は2文字としてカウントされます。通知権限はデフォルトで無効になっています。同じデバイスからの運用メッセージの数は1日あたり5つに制限されています。同じデバイスからの同じ運用メッセージを同日にプッシュすることはできません。 |
APNSチャネル | < 20文字(40英字) | 通知センターとロックスクリーンには最大110文字(55漢字)が表示されます。トップポップアップには最大62文字(31漢字)が表示され、長いメッセージは省略記号で表示されます。 | まだ説明がありません | まだ説明がありません |
多言語コード
言語 | 言語コード |
---|---|
英語 | en |
アラビア語 | ar |
中国語(簡体字) | zh-Hans |
中国語(繁体字) | zh-Hant |
チェコ語 | cs |
デンマーク語 | da |
オランダ語 | nl |
フランス語 | fr |
ドイツ語 | de |
ヒンディー語 | hi |
イタリア語 | it |
日本語 | ja |
韓国語 | ko |
マレー語 | ms |
ロシア語 | ru |
スペイン語 | es |
タイ語 | th |
ベトナム語 | vi |
インドネシア語 | id |
ノルウェー語 | no |
スウェーデン語 | sv |
ポーランド語 | pl |
トルコ語 | tr |
ヘブライ語 | he |
ポルトガル語 | pt |
ルーマニア語 | ro |
ハンガリー語 | hu |
フィンランド語 | fi |
ギリシャ語 | el |