IM Assemble 기술 가이드
  • 플랫폼 연동 Checklist
    • 멤버십 계정 구조
    • 회원가입/로그인
    • 서비스 이용 동의/철회/철회 복구
    • 탈퇴/탈퇴 복구
    • Guest 계정
    • 블록(제재) 연동
    • 게임 내 계정 설정 화면
    • 빌링 정책 연동
  • SDK 클라이언트 연동 가이드
    • Unreal Engine 연동 가이드
      • Unreal Engine 멤버십
      • Unreal Engine 빌링
    • Unity 연동 가이드
      • Unity 멤버십
      • Unity 빌링
    • 환경 설정
  • API 연동 가이드
    • 멤버십 API 정의서
    • 빌링 API 정의서
      • 용어 정리
      • 빌링 API 사용 시작하기
        • 상품ID 생성 규칙 가이드
        • 빌링API 코드 정의
        • 빌링 API 에러 코드 목록
      • 빌링 구매 리스트 조회
      • 빌링 시스템에 등록된 판매 가능 상품 리스트 조회(STEAM, PG)
      • Google 모바일 소모성 상품 구매
        • Google Play 구매 예약(소모성)
        • Google Play 유저의 구매 완료 요청에 대한 검증
        • Google Play 검증 성공한 구매에 대해서 소모(Consume) 및 완료처리 요청
        • Google Play 미 완료 및 소모(Consume) 처리 누락된 리스트 조회
        • 게임쪽에서 결제를 직접 구현한 경우
          • Google Play 유저의 구매 완료 데이터를 빌링에 저장 요청 - 게임에서 결제 기능을 직접 구현한 경우
      • Google PC 소모성 상품 구매
        • Google Play PC 구매 예약(소모성)
        • Google Play PC 유저의 구매 완료 요청에 대한 검증
        • Google Play PC 검증 성공한 구매에 대해서 소모(Consume) 및 완료처리 요청
        • Google Play PC 미 완료 및 소모(Consume) 처리 누락된 리스트 조회
      • Apple 소모성 상품 구매
        • Apple 구매 예약(소모성)
        • Apple 유저의 구매 완료 요청에 대한 검증
        • Apple 검증 성공한 구매에 대해서 완료처리 요청
        • Apple 미 완료 상태인 재 처리 리스트 조회
        • 게임쪽에서 결제를 직접 구현한 경우
          • Apple 유저의 구매 완료 데이터를 빌링에 저장 요청 - 게임에서 결제 기능을 직접 구현한 경우
      • Steam 소액 결제(게임 내 구매)
        • Steam 소액 결제 - 빌링 시스템에 구매 예약
        • Steam 소액결제 - InitTxn
        • Steam 소액결제 - FinalizeTxn
        • Steam 소액결제 - QueryTxn
        • Steam 소액결제 - 빌링 완료 처리
        • Steam 소액결제 - 미 완료 상태인 재 처리 리스트 조회
        • SDK API - 상품 상세 조회
        • 참고- 스팀 소액 결제를 사용할 때 사기 방지 조치에 대한 가이드
      • PG(Payment Gateway)를 이용한 인게임 결제
        • 빌링에 구매 예약을 진행하며, 유저가 결제를 진행할 수 있는 PG 결제 URL을 요청
      • Galaxy Store IAP 구매
        • Galaxy Store - 게임쪽에서 결제를 직접 구현한 경우
          • Galaxy Store 유저의 구매 완료 데이터를 빌링에 저장 요청 - 게임에서 결제 기능을 직접 구현한 경우
      • 빌링 API 참고 자료
        • Google Play 소모성 상품에 대해서, 가장 최근 예약된 구매건인데 소모처리 안되었다면 조회(모바일/PC 공용)
        • Google Play Developer API의 purchases.products.get(모바일/PC 공용) - GM툴 전용
    • 인벤토리 API 정의서
      • 인벤토리 아이템 조회
      • 인벤토리 아이템 예약하기
      • 인벤토리 아이템 사용 확인
      • 인벤토리 아이템 사용 취소
      • 인벤토리 아이템 사용 취소 및 영구 제외
      • 운영 목적의 예약상태 아이템 조회
      • 인벤토리 시스템에서 게임 서버에 알림 전송(webhook)
    • 게임 개발팀 제작 요청사항
      • 유저 제재 정보 갱신 API 제작 가이드
      • 유저 탈퇴 갱신 API 제작 가이드
      • 특정 유저 킥 API 제작 가이드
      • 빌링 상품 지급 API 제작 가이드
      • 빌링 상품 회수 API 제작 가이드
      • 무료 아이템 지급 API 제작 가이드 (Deprecated)
    • 부가기능 API 정의서
      • 클라이언트 접속 국가 정보 조회
      • 유저의 vipscore 조회
      • Push Message API 연동 가이드
  • 기능별 가이드
    • 유저 제재
    • 유저 행동 로그 수집
      • 서버사이드
      • 클라이언트 SDK
      • RESTful API
    • 재화(코인)에 대한 기술 가이드
    • In Game Web 딥링크 구현 규약
    • In Game Web URI 규약
    • Firebase 테스트 가이드
  • 업무 협업
    • 빌드 업로드
      • 게임 런처용 PC 클라이언트 빌드 업로드
    • 보관
      • Unity 멤버십
      • Unreal Engine 빌링
      • Unreal Engine 멤버십
  • 참고자료
    • 게임 빌드 버전 관리 정책 제안
Powered by GitBook
On this page
  • API 개요
  • 시작하기
  • 기본 URL
  • 인증
  • API 엔드포인트
  • 요청 형식
  • 요청 예시
  • 응답 형식
  • 에러 처리
  • 트러블슈팅
  1. API 연동 가이드
  2. 부가기능 API 정의서

Push Message API 연동 가이드

API 개요

Push Message API는 모바일 게임, 리모트, 런처 등 앱에 발송 할 푸시메시지를 등록하는 API 입니다.

시작하기

기본 URL

Environment
Endpoint

qa

https://api-qa.pub-dev.hybegames.io

prod

https://api.hybegames.com

모든 API 호출은 HTTPS를 통해 이루어져야 합니다.

인증

  • 아래의 HTTP Header들을 API 요청에 포함시켜야합니다.

이름
값
비고

X-Req-Pjid

프로젝트ID

기술 PM 등에게 전달받은 프로젝트ID

X-Auth-Access-Key

인증용 키

기술 PM 등에게 전달받은 해당 게임용 인증 키

API 엔드포인트

POST /push/api-in/v1/send-message/{imId}

URL 파라미터:

  • imid (필수): 사용자 고유 식별자

Content-Type: application/json

요청 형식

기본 구조

{
  "message": {
    "imid": "string (required)",
    "notification": {
      "title": "string (required)",
      "body": "string (required)"
    },
    "data": { /* optional object */ },
    "android": { /* optional object */ },
    "apns": { /* optional object */ },
    "webpush": { /* optional object */ },
    "apps": ["string"] // optional array
  }
}

필드 상세 설명

필수 필드

  • message.imid: 사용자 식별자 (URL 파라미터와 일치해야 함)

  • message.notification.title: 푸시 알림 제목

  • message.notification.body: 푸시 알림 내용

선택 필드

  • message.data: 앱에서 사용할 커스텀 데이터 (임의의 JSON 객체)

  • message.android: Android 특화 설정

  • message.apns: iOS APNS 특화 설정

  • message.webpush: Web Push 특화 설정

  • message.apps: 대상 앱 목록 (["game", "remote", "launcher"] 중 선택)

    • 비어있는 Array나 해당 필드를 포함하지 않으면 모든 대상에 발송됩니다.

요청 예시

기본 푸시 메시지

{
  "message": {
    "imid": "AVBXHNEBAV4FLRZQ4RLZ",
    "notification": {
      "title": "새 메시지가 도착했습니다",
      "body": "친구가 메시지를 보냈습니다"
    }
  }
}

커스텀 데이터 포함

{
  "message": {
    "imid": "AVBXHNEBAV4FLRZQ4RLZ",
    "notification": {
      "title": "게임 이벤트",
      "body": "특별 보상을 받으세요!"
    },
    "data": {
      "event_type": "special_reward",
      "reward_id": "reward_001",
      "expires_at": "2024-12-31T23:59:59Z"
    },
    "apps": ["game"]
  }
}

플랫폼별 설정

{
  "message": {
    "imid": "AVBXHNEBAV4FLRZQ4RLZ",
    "notification": {
      "title": "중요 알림",
      "body": "긴급 업데이트가 있습니다"
    },
    "android": {
      "priority": "high",
      "ttl": "3600s",
      "notification": {
        "icon": "myicon",
        "color": "#ff0000"
      }
    },
    "apns": {
      "headers": {
        "apns-priority": "10",
        "apns-expiration": "1735689599"
      },
      "payload": {
        "aps": {
          "badge": 1,
          "sound": "default"
        }
      }
    }
  }
}

응답 형식

성공 응답

HTTP Status Code: 200 OK

{
  "resultCode": "SUCCESS",
  "resultMessage": "Message successfully queued for processing",
  "resultData": {
    "messageId": "12345678-1234-1234-1234-123456789012",
    "imid": "AVBXHNEBAV4FLRZQ4RLZ"
  }
}

실패 응답

HTTP Status Code: 200 OK

{
  "resultCode": "ERROR_CODE",
  "resultMessage": "에러 메시지",
  "resultData": {
    "details": "상세 에러 메시지 내용"
  }
}

에러 처리

에러 코드 목록

에러 코드
설명
해결 방법

INVALID_REQUEST_FORMAT

요청 형식이 올바르지 않음

JSON 구조와 필수 필드 확인

IMID_MISMATCH

URL 파라미터와 본문의 IMID 불일치

URL과 본문의 imid 값 일치시키기

INTERNAL_SERVER_ERROR

내부 서버 오류

잠시 후 재시도하거나 관리자 문의

NOT_FOUND

엔드포인트를 찾을 수 없음

URL 경로 확인

MISSING_HEADER

인증 헤더를 찾을 수 없음

인증 헤더를 추가

NOT_ALLOW_AUTH

잘못된 인증 정보

올바른 인증 정보로 요청

트러블슈팅

IMID_MISMATCH 에러

문제: URL 파라미터의 imid와 요청 본문의 imid가 다름

해결:

// 잘못된 예시
fetch('/push/api-in/v1/send-message/AVBXHNEBAV4FLRZQ4RLZ', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    message: { imid: 'DMWYJZ3HWSGJR5TYUXGP', ... }  // 불일치!
  })
});

// 올바른 예시
fetch('/push/api-in/v1/send-message/AVBXHNEBAV4FLRZQ4RLZ', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    message: { imid: 'AVBXHNEBAV4FLRZQ4RLZ', ... }  // 일치!
  })
});

INVALID_REQUEST_FORMAT 에러

문제: 필수 필드 누락 또는 잘못된 데이터 타입

해결:

  • message.notification.title과 message.notification.body 필수 확인

  • apps 배열에는 올바른 값만 포함 ("game", "remote", "launcher")

  • JSON 구조 검증

메시지가 전송되지 않음

문제: API는 성공하지만 실제 푸시가 도착하지 않음

해결:

  • 기술PM에 관리자 문의

  • 대상 디바이스의 푸시 알림 설정 확인

메시지가 느리게 전송 됨

문제: API는 성공하지만 푸시메시지가 느리게 도착 함

해결:

  • 기술PM에 관리자 문의

Previous유저의 vipscore 조회Next유저 제재

Last updated 2 days ago