푸시 알림
작동 방식

웹샵 솔루션에서 푸시 알림을 설정할 수 있습니다. 푸시 알림은 사용자가 브라우저에서 직접 받는 개인 또는 대량 메시지입니다. 푸시 알림을 통해 사용자에게 새로운 아이템, 프로모션, 특별 혜택에 대해 알릴 수 있습니다.
예를 들어, 전투에서 패배하거나 자원이 부족할 때 사용자에게 알림을 보내려면 게임 서버 측에서 알림 전송을 위한 엑솔라 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
요청 헤더
| 헤더 | 필수 여부 | 설명 |
|---|---|---|
| 인증 | 예 | 전달자 <토큰> |
| 멱등성 키 | 예 | 고유 요청 키. 동일한 알림이 여러 번 전송되는 것을 방지합니다. |
| 콘텐츠 유형 | 예 | application/json |
요청 매개 변수
| 매개 변수 | 유형 | 설명 |
|---|---|---|
app_id | string | 엑솔라 측의 애플리케이션 ID, 푸시 알림 섹션 설정에서 가져옵니다. 필수입니다. |
identity | object | 알림 수신자 데이터. |
external_user_id | string | 사용자 ID. 필수입니다. |
title | string | 알림 제목. 필수입니다. |
body | string | 알림 텍스트. 필수입니다. |
image_url | string | 알림에 표시되는 이미지의 URL. |
data | object | 추가 알림 데이터. |
url | string | 사용자가 알림을 클릭했을 때 열리는 페이지의 URL. 매개 변수가 전달되지 않으면 웹샵 솔루션의 메인 페이지가 열립니다. |
응답 매개 변수
| 매개 변수 | 유형 | 설명 |
|---|---|---|
message_ids | array of strings | 사용자가 알림을 구독한 각 브라우저 또는 설치된 PWA에 대한 전송된 메시지 ID 목록. UUID 형식입니다. |
요청 예시
- 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}
모든 사용자에게 알림 전송
설치 프로그램사용자 ID를 통해 개인 푸시 알림을 보냅니다. 알림은 사용자가 알림을 구독한 모든 브라우저와 설치된 PWA에 전달됩니다.
HTTP 요청
POST https://messaging-platform.xsolla.com/api/v2/messages/push/send_batch
요청 헤더
| 헤더 | 필수 여부 | 설명 |
|---|---|---|
| 인증 | 예 | 전달자 <토큰> |
| 멱등성 키 | 예 | 고유 요청 키. 동일한 알림이 여러 번 전송되는 것을 방지합니다. |
| 콘텐츠 유형 | 예 | application/json |
요청 매개 변수
| 매개 변수 | 유형 | 설명 |
|---|---|---|
app_id | string | 엑솔라 측의 애플리케이션 ID, 푸시 알림 섹션 설정에서 가져옵니다. 필수입니다. |
recipients | object | 알림 수신자를 정의합니다. |
type | string | 수신자 유형. 가능한 값: all - 모든 구독자; external_user_id - 선택된 사용자. |
external_user_id | array of strings | 사용자 ID 배열. type 매개 변수가 external_user_id로 설정된 경우 전달합니다. 필수입니다. |
title | string | 알림 제목. 필수입니다. |
body | string | 알림 텍스트. 필수입니다. |
image_url | string | 알림에 표시되는 이미지의 URL. |
data | object | 추가 알림 데이터. |
url | string | 사용자가 알림을 클릭했을 때 열리는 페이지의 URL. 매개 변수가 전달되지 않으면 웹샵 솔루션의 메인 페이지가 열립니다. |
응답 매개 변수
요청 예시
응답 예시
오자 또는 기타 텍스트 오류를 찾으셨나요? 텍스트를 선택하고 컨트롤+엔터를 누르세요.