コンテンツにスキップ

シングルプッシュ

前提条件

Single Push APIと同期するには、認証トークン(API KEY)を発行する必要があります。すでにキーをお持ちの場合は、追加の権限をリクエストしてください。認証トークンのリクエストと発行方法については、Hive Server API > Notification > Push v4 > Authenticationを参照してください。

Note

シングルプッシュAPIは非同期であり、次のように処理されます: APIリクエスト > トークンルックアップ > 送信

  • APIリクエスト: リクエストデータを検証し、リクエストに対するレスポンスコードを返します。
  • トークンルックアップ: リクエストデータに対するプッシュトークンを検索します。トークンがない状況もあり得ます。
  • 送信: 各マーケットのプッシュサーバー(ADM、APNS、FCM、Facebookなど)にデータを転送します。マーケットから受け取ったレスポンスは処理結果を示します。
  • トークンルックアップと送信のステップで処理が失敗した場合、プッシュサーバーを呼び出したクライアントにレスポンスは転送されません。データを送信してから10分以内にプッシュが届かない場合は、**ソリューションアーキテクトチーム、Com2uSプラットフォーム**にお問い合わせください。

URL

サーバー URL
プロダクション https://notification.withhive.com
サンドボックス https://sandbox-notification.withhive.com

基本データとリクエスト変数

メソッド POST
URL /push/send
区分 フィールド名 説明 タイプ 必須
ヘッダー Content-Type application/json;charset=utf-8
Authorization bearer {{API KEY}}
ボディ notice

通知を送信するかどうか(デフォルト:'false')

      true
    • 通知を発表通知として送信します。
    • ユーザーの同意に応じて通知を送信します。
      false
    • ゲーム通知として送信します。
    • ユーザーの同意に関係なく通知を送信します。

発表および夜間通知は、ユーザーの同意を得るために必要な項目です。

  • ユーザーが発表通知を受け取ることに同意しない場合、発表として設定されたすべての通知は送信がブロックされます。
  • 夜間通知を受け取ることに関する同意は、発表通知を受け取ることに同意した後にのみ有効になります。そうでない場合、発表として設定されたすべての通知は夜間に送信がブロックされます。夜間は午後9時から午前8時までです。

Boolean O
identifiers 識別子情報(最大100)識別子構造およびを確認してください。 identifier[] O
ゲーム gameid ゲームID String O
appids

AppIDのリスト マッピングされたAppIDが無効な場合は何も送信されません。

推奨事項

  • デバイスベースのID(did):マッピングされたAppIDを追加します。
  • アカウントベースのID(playerId、vid、uid):すべてのマッピングされたAppIDのリストを追加します。
  • さまざまなタイプのID:識別子構造を参照して優先順位を確認します。

String[] X
enableLocale

各言語のロケールを有効にするかどうか

    true
  • ターゲットユーザーが設定した同じ言語でメッセージを送信します。これはトークンと設定された言語コードに基づいています。
  • トークンを保存する際の言語を決定します。
  • 最優先:ゲーム言語
  • 第二の優先:デバイス言語(ゲーム言語が送信されない限り)
    false
  • 言語ロケールを無視し、ペイロードフィールドの単一の値として送信します。

Boolean O
ペイロード single enableLocale=falseの場合の単一フィールドへのリクエストメッセージ構造を確認してください。 メッセージ O
defaultLanguage enableLocale=trueの場合のデフォルト言語の値を設定します。 String
locale {{LANGUAGE}} enableLocale=trueの場合のロケールフィールドの値を設定します。単一フィールドのメッセージ情報と同じデータです。 メッセージ
option オプション情報を参照してください。 オプション X
Note
  • 適切な単一プッシュ受信のためには、appidsおよびidentifiersフィールドには1つのデータのみを入力することをお勧めします。
    • 検索条件を指定できないため、リクエストに複数のidentifiersおよびappidsが含まれている場合、プッシュ配信が遅れる可能性があります。
  • identifier値には優先度の高い値を指定することをお勧めし、did値のみでidentifierを構成することは避けてください。
  • gameフィールドにgameidのみが指定されたリクエストは避けるべきです。
    • gameidに含まれるすべてのappidsが検索されるため、appidsフィールドに情報がない場合、プッシュ配信が遅れる可能性があります。
  • optionフィールドはFacebookには適用されません。

識別子の構造

区分 フィールド名 説明 タイプ 必須
識別子 識別子 playerId 4つの識別子のうちの1つを含める必要があります。優先順位はplayerId、vid、uid、didの順です。 長整数 O
vid
uid
did

識別子の例

[
  {
    "playerId":51234,
    "vid":11232,
    "did":1234
  }
]

メッセージ構造

iostitleタイトル文字列Ofacebooktitleタイトル (1~30文字以内)文字列O

部門 フィールド名 説明 タイプ 必須
メッセージ android タイトル タイトル 文字列 O
メッセージ メッセージ 文字列 O
展開メッセージ 展開されたメッセージ 文字列 O
画像URL 画像のURL 文字列 X
ティッカー ティッカー 文字列 X
要約テキスト 要約されたメッセージ 文字列 X
メッセージ メッセージ 文字列 O
メディアURL 画像パス 文字列 X
本文 本文(10〜180文字以内) 文字列 O
メディア 画像のURL 文字列 O

オプション情報

カテゴリ フィールド名 説明 タイプ 必須
オプション badge プッシュ通知を受信したときにアプリアイコンに表示される数値(デフォルト: 1) 整数 X
overwrite Androidでプッシュ上書き機能を使用するかどうか(デフォルト: false) ブール値 X
collapseKey プッシュ上書き機能が有効なときに使用されるキー値(数値の文字列形式: "123") 文字列 X
engagement ユーザーエンゲージメント 文字列 X
comment テキスト 文字列 X
groupKey これは、iOSおよびAndroidデバイスで受信した通知をグループ化するために使用されるグループキーの値です。デバイスOSに設定された通知オプションは、デフォルトで適用されます。オプションの詳細については、以下の文書を参照してください。 String X
android アイコン ユーザーのデバイスにプッシュ通知が受信されたときに表示されるアイコン画像のファイル名。この画像ファイルは/src/main/res/drawableに存在する必要があります。サポートされている画像ファイル形式はこちらで確認できます。 ウェブから画像を表示したい場合は、ファイル名の代わりにこのフィールドに画像のURLを入力してください。このフィールドが空の場合、アプリアイコン画像が表示されます。 文字列 X
サウンド ユーザーのデバイスにプッシュ通知が受信されたときに再生される通知音のファイル名。アプリバンドルに含まれるサウンドファイルを指定でき、サウンドファイルは/src/main/res/rawに存在する必要があります。このフィールドが空の場合、システムのデフォルトサウンドが使用されます。 文字列 X
優先度 Androidデバイスに送信されるメッセージの優先度。この優先度はメッセージ配信のタイミングを制御し、FCMの概念です。NORMALまたはHIGHの値を持ち、デフォルトはNORMALです。詳細については、Firebaseガイドを参照してください。
  • NORMAL = データメッセージのデフォルトの優先度。通常、優先度の高いメッセージはデバイスがスリープモードでないときに即座に送信されます。デバイスがスリープモードのときは、バッテリーを節約するために配信が遅れることがあります。新しいメール通知、UIの同期維持、バックグラウンドアプリデータの同期など、時間に敏感でないメッセージには通常の配信優先度を選択してください。
  • HIGH = FCMは高優先度のメッセージを即座に送信し、必要に応じてデバイスをスリープモードから起こすことができ、限られた処理タスクを実行します。これには非常に制限されたネットワークアクセスが含まれます。高優先度のメッセージは通常、アプリとのユーザーインタラクションや通知に関係しています。
enum(NORMAL, HIGH) X
ios sound プッシュ通知がユーザーのデバイスに受信されたときに再生される通知音のファイル名。この音声ファイルはアプリコンテナのLibrary/Soundsまたはメインアプリバンドルに存在する必要があります。このフィールドが空の場合、自動的に「default」に設定され、ユーザーのAppleデバイスでのシステムデフォルト音が使用されます。 String X

出力結果

部門 フィールド名 説明
ヘッダー コンテンツタイプ application/json;charset=utf-8
UUID {{UUID}}
本文 - 成功した場合、本文は空です

応答ステートコード

キー 説明
200 成功 (ボディは空です。)
400 不正なリクエスト POSTデータが省略されています。JSON形式エラー必須要素が省略されているか無効です。
401 認証されていません リクエストメッセージのAuthorizationヘッダーが省略されているか無効です。Authorizationキー(API KEY)が登録されていません。関連APIへのアクセス権がありません。
403 禁止されています Authorizationヘッダーの認証方式が「Bearer」ではありません。(Bearerのみサポート)
404 見つかりません リクエストURLが間違っています。
500 サーバー内部エラー サーバー上の内部エラー
502 不正なゲートウェイ プッシュゲートウェイサーバーが過負荷です。ネットワーク接続が誤っています。
503 サービス利用不可 APIサーバーまたは認証サーバーがフリーズしています。

サンプルコード

  • Call ("enableLocale":false)

    curl -L -v
    > -d '{"notice":false,"identifiers":[{"vid":19239,"did":300010915}],"game":{"gameid":"com.com2us.hivesdk","appids":["com.com2us.hivesdk.normal.freefull.google.global.android.common"]},"enableLocale":false,"payload":{"single":{"android":{"title":"TEST","message":"TEST","messageExpanded":"","imageUrl":"","ticker":"","summaryText":""},"ios":{"title":"","message":"","mediaUrl":""},"facebook":{"title":"TEST", "body":"TEST MESSAGE BODY", "media": "https://image.newdaily.co.kr/site/data/img/2022/05/13/2022051300019_0.jpg"}},"option":{"badge":"1","overwrite":false,"collapseKey":"","engagement":"","groupKey": "", "android":{"icon":"","sound":"", "priority": "normal"},"ios":{"sound":""}}}}'
    > -d '{"notice":false,"identifiers":[{"vid":19239,"did":300010915}],"game":{"gameid":"com.com2us.hivesdk","appids":["com.com2us.hivesdk.normal.freefull.google.global.android.common"]},"enableLocale":false,"payload":{"single":{"android":{"title":"TEST","message":"TEST","messageExpanded":"","imageUrl":"","ticker":"","summaryText":""},"ios":{"title":"","message":"","mediaUrl":""},"facebook":{"title":"TEST", "body":"TEST MESSAGE BODY", "media": "https://image.newdaily.co.kr/site/data/img/2022/05/13/2022051300019_0.jpg"}},"option":{"badge":"1","overwrite":false,"collapseKey":"","engagement":"","groupKey": "", "android":{"icon":"","sound":"", "priority": "normal"},"ios":{"sound":""}}}}'
    > -H "Content-Type: application/json"
    > -H "Authorization: Bearer {API KEY}"
    > https://sandbox-notification.qpyou.cn/push/send
    
  • コール ("enableLocale":true)

    {
        "notice": false,
        "identifiers": [
            {
                "playerId": 30000028045
    }
    ],
        "game": {
            "gameid": "com.com2us.hivesdk",
            "appids": [
    "com.com2us.hivesdk.normal.freefull.google.global.android.common",
    "com.com2us.hivesdk.normal.freefull.apple.global.ios.universal"
    ]
        },
        "enableLocale": true,
        "payload": {
            "defaultLanguage": "en",
            "locale": {
                "ko": {
                    "android": {
                        "title": "test_Korean_title",
                        "message": "test_Korean_message"
                    },
                    "ios": {
                        "title": "test_Korean_title",
                        "message": "test_Korean_message"
                    },
                    "facebook": {
                        "title": "test_Korean_title",
                        "body": "test_Korean_message",
                        "media": "https://image.newdaily.co.kr/site/data/img/2022/05/13/2022051300019_0.jpg"
                    }
                },
                "en": {
                    "android": {
                        "title": "test_English title",
                        "message": "test_English message"
                    },
                    "ios": {
                        "title": "test_English title",
                        "message": "test_English message"
                    },
                    "facebook": {
                        "title": "test_English title",
                        "body": "test_English message",
                        "media": "https://image.newdaily.co.kr/site/data/img/2022/05/13/2022051300019_0.jpg"
                    }
                }
            },
            "option": {
                "badge": 1,
                "overwrite": true,
                "collapseKey": "99",
                "groupKey: "",
                "android": {
                    "icon": "GoogleIcon",
                    "sound": "GoogleSound",
                    "priority": "normal"
                },
                "ios": {
                    "sound": "AppleSound"
                }
            }
        }
    }
    
Note

サーバーがログをすぐに確認できるように、スペースを空けずに連続してコールデータを送信することをお勧めします。

  • リクエスト
> POST /push/send HTTP/1.1
> User-Agent: curl/7.29.0
> Host: sandbox-notification.qpyou.cn
> Accept: */*
> Content-Type: application/json
> Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpYXQiOjE1NDE1NzMyOTcsImp0aSI6ImFkbWluaXN0cmF0b3IifQ.23nG9RnbuOwnMbRSebBi2i-Qt_fOfqU_vUKUZ2JJlWU
> Content-Length: 502
  • 応答
< HTTP/1.1 200 OK
< content-length: 0
< Content-Type: application/json
< UUID: 3bc6b414-e2df-40d6-8006-9d2308a6edf9