プッシュ通知
仕組み

ウェブショップでは、プッシュ通知を設定できます。これは、ユーザーがブラウザで直接受け取る個別または一括メッセージです。プッシュ通知を使用すると、新しいアイテム、プロモーション、特別オファーについてユーザーに知らせることができます。
ユーザーに通知を送信するには、例えばユーザーが戦闘で敗れた際や、リソースが切れた際など、ゲームサーバー側から通知送信用のエクソーラAPIを呼び出します。
通知をクリックすると、ユーザーはウェブショップに移動し、必要なアイテムを購入することができます。
プッシュ通知はエクソーラサイトビルダーで設定され、公開されたウェブショップでのみ機能します。
エクソーラはゲーム内イベントを追跡しません。ゲームサーバーが通知を送信するためのAPIコールを行うタイミングを定義します。例を以下に示します:
| ゲーム内イベント | プッシュ通知のテキスト |
|---|---|
| 日、週、または月の初回ログイン。 | おかえりなさい!ウェブショップでギフトをチェックしてください。 |
| 戦闘に敗北。 | 諦めないで!ヒーローのパワーアップアイテムを購入して、リベンジしましょう! |
| エネルギーまたは通貨が不足。 | エネルギー切れ?ウェブショップで補充して遊び続けましょう! |
| 新しいコンテンツがアンロックされました。 | 新しいレベルがアンロックされました!ウェブショップでパワーアップを購入して簡単にクリアしましょう。 |
| 連続での失敗。 | 強敵に苦戦していますか?勝利を助ける武器バンドルがウェブショップで待っています。 |

インタラクションフロー
- ユーザーがブラウザまたはインストールされたPWAでウェブショップを開き、通知の登録を促すバナーが表示されます。
- ユーザーが「登録」をクリックし、ブラウザのシステムプロンプトで通知を許可します。
「自動リクエスト許可」オプションが有効な場合のサブスクリプションロジック
サイト設定で「自動リクエスト許可」オプションが有効な場合、ウェブショップを開いた際にサブスクリプションバナーを表示せずに通知の許可をリクエストします。ユーザーがすでに以前に権限を許可している場合は、サブスクリプションが自動的に完了します。リクエストが失敗した場合(例:ブラウザによってブロックされた場合や、ユーザーが権限を拒否した場合)、サブスクリプションバナーが表示されます。
flowchart LR
A[User opens Web Shop] --> B{Permission already granted?}
B -- Yes --> C[Automatic subscription]
B -- No --> D{Can the browser show the system prompt?}
D -- Yes --> E[System prompt]
D -- No --> F[Subscribe banner]
F --> E
E -- Allow --> G[Subscribed]
E -- Block --> H[Not subscribed]
ウェブショップはユーザーをエクソーラシステムの登録者として登録します。サブスクリプションはユーザーのデバイス上のブラウザまたはインストールされた PWA に紐付けられます。ユーザーに送信できる通知は、ユーザーの認証状態によって異なります:
- ユーザーがウェブショップにログインしている場合、そのユーザーIDがサブスクリプションと紐付けられるため、そのユーザーへの個人向け通知を送信できます。
- ユーザーがログインしていない場合、一括通知のみを送信できます。ユーザーがログインすると、サブスクリプションは自動的にそのユーザーIDと紐付けられます。
ゲームサーバーが通知を送信するためのエクソーラAPIコールを行います。
ユーザーがプッシュ通知を受け取ります。
ユーザーが通知をクリックすると、ウェブショップへ移動します。移動先は
data.urlパラメータで指定されたページ、またはパラメータが指定されていない場合はメインページになります。ユーザーがウェブショップでアクティブなセッションを持っている場合は、ログイン状態が維持されます。
sequenceDiagram
participant U as User
participant WS as Web Shop
participant G as Game
participant X as Xsolla
note over U,X: Subscription
U->>WS: Opens the site / PWA
WS->>U: Displays the subscription banner
U->>WS: Subscribes and allows notifications
WS->>X: Registers the subscriber (User ID, browser / PWA)
X-->>WS: Confirms the subscription
note over U,X: Sending a notification
G->>X: Calls POST /messages/push/send
X-->>G: Returns message_id
X->>U: Sends the push notification
U->>WS: Clicks the notification, follows data.url
WS->>U: Displays store offers
取得方法
- パブリッシャーアカウントでプロジェクトを開き、ストアフロント > ウェブサイトセクションに移動します。
- 目的のサイトのペインで「サイトビルダーを開く」をクリックします。
- プッシュ通知セクションに移動します。
- 通知を有効にするトグルをオンにします。
- アプリケーションID、クライアントID、クライアント秘密鍵フィールドから値をコピーします。これらはゲームサーバーからAPIリクエストを送信するために必要です。パラメータは一度作成され、通知を有効にするトグルが初めてオンになったときにプロジェクト全体で使用されます。プロジェクトに複数のサイトがある場合、同じ値がすべてのサイトで使用されます。
- 必要に応じてサブスクリプションバナーを設定します:タイトル、説明、アイコン、ボタンのテキストを変更します。
- サイトが開かれたときに自動的にユーザーの通知送信許可をリクエストするには、自動リクエスト許可トグルをオンにします(任意)。トグルがオフの場合、ユーザーが登録ボタンをクリックした後にのみ許可がリクエストされます。
- 変更を適用するには、サイトを公開します。

- ゲームサーバーでプッシュ通知送信ロジックを実装します。ゲームサーバーは通知送信のためのAPIコールを行い、リクエストにユーザーIDを含める必要があります。
通知の送信
エクソーラは自動的に通知を送信することはありません。送信は常にゲームサーバーからAPIコールを介して開始する必要があります。
ベースURL: https://messaging-platform.xsolla.com
認証
リクエストはOAuth 2.0プロトコルを介して認証されます。JWTを生成するAPIコールを使用してサーバーJWTを取得し、次のパラメータを渡します:
grant_type— JWTのグラントタイプ、client_credentials値を渡しますclient_id— プッシュ通知セクション設定のクライアントIDフィールドの値client_secret— プッシュ通知セクション設定のクライアント秘密鍵フィールドの値
受け取ったトークンをAuthorization: Bearer <token>ヘッダーに渡します。
ユーザーへの通知送信
ユーザーのIDを指定して、個人向けのプッシュ通知を送信します。通知は、ユーザーが通知を登録しているすべてのブラウザおよびインストール済みのPWAに配信されます。
HTTPリクエスト
POST https://messaging-platform.xsolla.com/api/v1/messages/push/send
リクエストヘッダー
| ヘッダー | 必須 | 説明 |
|---|---|---|
| Authorization | はい | Bearer <token> |
| Idempotency-Key | はい | 一意なリクエストキー。同じ通知を複数回送信することを防ぎます。 |
| Content-Type | はい | application/json |
リクエストパラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
app_id | 文字列 | エクソーラ側のアプリケーションID、プッシュ通知セクション設定から取得します。必須。 |
identity | オブジェクト | 通知受信者データ。 |
external_user_id | 文字列 | ユーザーID。必須。 |
title | 文字列 | 通知タイトル。必須。 |
body | 文字列 | 通知テキスト。必須。 |
image_url | 文字列 | 通知に表示される画像のURL。 |
data | オブジェクト | 追加の通知データ。 |
url | 文字列 | ユーザーが通知をクリックしたときに開くページのURL。パラメータが渡されていない場合、ウェブショップのメインページが開きます。 |
応答のパラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
message_ids | 文字列の配列 | 送信済みメッセージIDのリスト(UUID形式)。ユーザーが通知を購読している各ブラウザ、またはインストールされたPWAごとに一つずつ含まれます。 |
リクエストの例
- json
1{
2 "notification_type": "user_validation",
3 "settings": {
4 "project_id": 123456,
5 "merchant_id": 789012
6 },
7 "user": {
8 "id": "11111111-1111-1111-1111-111111111111"
9 }
10}
応答の例
- json
1{
2 "message_ids": [
3"aa8ef5c2-front-4a3b-9d2e-example00001",
4"bb9fa6d3-front-4b4c-8e3f-example00002"
5 ]
6}
すべてのユーザーへの通知送信
全ユーザー、または選択された登録ユーザーに対してプッシュ通知を送信します。通知は、ユーザーが通知を登録しているすべてのブラウザおよびインストール済みのPWAに配信されます。
HTTPリクエスト
POST https://messaging-platform.xsolla.com/api/v2/messages/push/send_batch
リクエストヘッダー
| ヘッダー | 必須 | 説明 |
|---|---|---|
| Authorization | はい | Bearer <token> |
| Idempotency-Key | はい | 一意なリクエストキー。同じ通知を複数回送信することを防ぎます。 |
| Content-Type | はい | application/json |
リクエストパラメータ
| パラメータ | タイプ | 説明 |
|---|---|---|
app_id | 文字列 | エクソーラ側のアプリケーションID、プッシュ通知セクション設定から取得します。必須。 |
recipients | オブジェクト | 通知受信者を定義します。 |
type | 文字列 | 受信者タイプ。可能な値:all — すべての購読者;external_user_id — 選択されたユーザー。 |
external_user_id | 文字列の配列 | ユーザーIDの配列。typeパラメータがexternal_user_idに設定されている場合に渡します。必須。 |
title | 文字列 | 通知タイトル。必須。 |
body | 文字列 | 通知テキスト。必須。 |
image_url | 文字列 | 通知に表示される画像のURL。 |
data | オブジェクト | 追加の通知データ。 |
url | 文字列 | ユーザーが通知をクリックしたときに開くページのURL。パラメータが渡されていない場合、ウェブショップのメインページが開きます。 |
応答のパラメータ
リクエストの例
応答の例
誤字脱字などのテキストエラーを見つけましたか? テキストを選択し、Ctrl+Enterを押します。