이 주제에서는 플레이어가 Google Play 앱에서 Play 포인트를 사용하여 인앱 상품을 구매한 후 게임에서 인앱 상품을 감지하고 전송하는 방법을 설명합니다.
사용자가 Google Play 앱에서 Play 포인트를 사용하여 인앱 상품을 구매하면 상품은 게임에서 즉시 전송되어야 합니다. 다음은 사용자가 Play 포인트로 상품을 구매하는 방법을 보여줍니다.
1. Play Points를 클릭합니다. | 1. 항목을 보려면 사용 탭을 클릭합니다. | 2. 상품을 선택하고 포인트 사용하기를 클릭하여 구매를 완료합니다. | 3. 상품을 수신합니다. |
이 예에서는 제품을 구매하는 동안에 게임이 실행되지 않습니다. 기기에 게임이 설치되어 있지 않은 상태에서도 사용자는 Play 포인트를 상품으로 교환할 수 있습니다. 따라서 게임 내 스토어 외부에서 인앱 상품 전송을 처리하도록 게임을 디자인해야 합니다.
시작하기 전에
인앱 상품을 감지하고 전송하기 전에 상품 및 Play Points 프로모션을 생성해야 합니다.
전송 요구사항
Play Points 프로모션을 사용하여 게임에서 인앱 상품을 전송할 때는 이 섹션의 요구사항을 준수해야 합니다.
전송 시기
플레이어가 Play 포인트를 인앱 상품으로 교환하는 경우 플레이어가 게임을 다시 시작할 필요 없이 개발자는 즉시 상품을 전송해야 합니다. 튜토리얼 완료와 같이 게임 콘텐츠를 먼저 완료해야 하는 경우 완료 직후 상품을 전송해야 합니다.
전송 메시지
사용자가 게임 외부에서 인앱 상품을 구매한 후 게임으로 돌아오면 게임 내에서 상품이 성공적으로 제공되었다는 확인 메시지를 표시해야 합니다. 이 메시지는 팝업 대화상자나 인게임 메시지 형식이어야 합니다. 사용자가 상품을 받기 위해 추가 단계를 따를 필요가 없어야 합니다.
필수 메시지 형식은 다음과 같습니다.
명확한 메시지로 상품이 수신되었음을 알립니다.
상품 이름을 명확하게 나타내고 'Play Points'를 표시하여 사용자가 수신하는 다른 콘텐츠와 구별할 수 있도록 합니다.
금액이 여러 개인 유사한 상품이 있으면 상품 이름에는 정확한 상품 금액도 포함되어야 합니다.
팝업 대화상자나 메시지, 인게임 알림은 사용자가 계속 또는 확인과 같은 확인 메시지를 클릭할 때까지 사용자에게 표시되어야 합니다. 이 메시지는 사용자가 수신한 인게임 상품에 관해 알리는 용도로만 사용되므로 취소 버튼은 없어야 합니다. 확인 버튼이 없는 경우 메시지는 사용자가 상품을 받은 사실을 알도록 사용자에게 3초 이상 표시된 후 사라져야 합니다.
다음은 메시지 예입니다.
'상품이 수신되었습니다. Play 포인트로 보석 100개를 받았습니다. 계속 진행하세요.'
사용자에게 인게임 화폐 잔액의 증가를 보여주는 애니메이션이나 일부 시각적 확인 화면이 표시되어야 합니다. 지속형 또는 소모형 인앱 상품의 경우 게임 내에서 상품을 잠금 해제하거나 사용할 수 있는 위치로 사용자를 안내해야 합니다.
게임 외부에서 받은 상품 감지
게임에서 Google Play 결제 라이브러리를 사용하는 경우 게임 외부에서 수신되는 인앱 상품을 감지하도록 다음과 같이 변경합니다.
어떤 상품이 확인되지 않았는지 파악할 수 있도록 게임의
onResume()
콜백에서queryPurchases()
메서드를 호출하여 상품 목록을 가져오세요.게임에 서버가 있는 경우 Subscriptions and In-App Purchases API를 사용하여 서버에서 구매를 확인하는 것이 좋습니다.
사용자가 소유하고 있으나 확인되지 않은 상품이 있다면 소모형 상품에는
consumeAsync()
, 비소모형 상품에는acknowledgePurchase()
를 사용하여 구매를 확인합니다.게임 내 구매 상품에 대한 권한을 부여합니다.
화면 분할 모드로 받은 상품 감지
게임이 멀티 윈도우 모드를 지원하는 경우 Play 스토어 앱과 게임을 동시에 실행하면서 Play 포인트를 사용하여 상품을 구매할 수 있습니다. 다음 스크린샷은 예를 보여줍니다.
Google Play 결제 라이브러리로 이러한 시나리오를 지원하려면 다음 설명을 따르세요.
Google Play는
onPurchasesUpdated()
메서드를 호출하여 대기 중인 새 상품이 있음을 게임에 알립니다.게임에 서버가 있는 경우 Subscriptions and In-App Purchases API를 사용하여 서버에서 구매를 확인하는 것이 좋습니다.
소모형 상품에는
consumeAsync()
, 비소모형 상품에는acknowledgePurchase()
를 사용하여 구매를 확인합니다.게임 내 구매 상품에 대한 권한을 부여합니다.
전송 확인 메시지 표시
사용자는 Play 포인트를 사용하여 교환 상품을 구매한 후 받으면 게임에서 인게임 메시지를 표시하거나 일종의 알림을 사용하여 게임에서 상품을 잘 수신해 처리했다고 알려주길 기대합니다. 다음은 전송 확인 옵션입니다.
인게임 팝업을 표시합니다.
인게임 메시지 상자에 메시지를 전송하고 인게임 메시지 상자에 새 메시지가 있다고 명확히 알립니다.
OS 알림 메시지를 사용합니다.
프로모션 상품을 받을 때 게임은 기기에 설치되지 않은 상태를 포함하여 어떤 상태에도 있을 수 있습니다. 사용자가 상품을 받을 때 게임이 어떤 상태에 있든지 개발자는 프로모션 상품을 감지해야 합니다. 하지만 상품이 수신되었다고 사용자에게 즉시 알리지 않아도 되는 몇 가지 예외 상황이 있습니다. 예를 들면 다음과 같습니다.
게임 액션 중에 메시지를 표시하면 사용자의 주의가 산만해질 수 있습니다. 이 경우 액션이 종료된 후 사용자에게 알려야 합니다.
컷신 중에 메시지를 표시하면 사용자의 주의가 산만해질 수 있습니다. 이 경우 컷신이 끝난 후에 사용자에게 알려야 합니다.
게임의 초기 튜토리얼 및 사용자 설정 중에도 사용자에게 즉시 알리지 않아도 됩니다. 신규 사용자가 게임을 연 직후 또는 처음 사용자 설정 중에 리워드를 알리는 것이 좋습니다. 그러나 사용자에게 알리는 데 메인 게임 시퀀스를 사용할 수 있을 때까지 기다려도 괜찮습니다.
앱에 상품을 적용할 수 있는 캐릭터나 계정이 여러 개 있다면 사용자에게 프로모션 상품을 수신할 계정을 선택하라는 메시지를 표시하는 것이 좋습니다.
사용자를 고려하여 프로모션 상품을 알리는 시점과 방법을 결정하세요. 즉시 알림이 수신되지 않으면 사용자는 혼란스러워하거나, 게임 플레이를 중단하거나, 사용자 지원팀에 문의하거나, 소셜 미디어에 불만 글을 게시할 수 있습니다.
특정 게임 엔진 업데이트
다음은 특정 게임 엔진에 도움이 되는 고려사항입니다.
게임이 Unity로 빌드된 경우 사용 중인 IAP 구현이 이미 Play Points 프로모션을 지원하는지 확인하는 것이 좋습니다.
게임이 Cocos2d-x나 Unreal Engine(C/C++)으로 빌드된 경우 C/C++ 코드에서 자바 API를 호출하는 JNI 코드를 작성해야 할 가능성이 매우 높습니다.
서버 측 권장사항
이 섹션에는 Play Points 프로모션에 사용할 서버 측 권장사항이 포함되어 있습니다.
서버에서
Purchases.products: get
을 호출한다면productId
값에 따라 Play 리워드 교환 상품과 기타 인앱 상품을 별도로 처리해야 하는지 확인합니다.서버에서
Inappproducts: list
를 사용한다면productId
값에 따라 Play 리워드 교환 상품을 다른 인앱 상품과 구분해야 하는지 확인합니다.다음 권장사항을 검토하여 추가로 변경해야 하는지 확인합니다.
- 참조:
- 서버 측 서명 확인 구현
purchaseToken
값과orderId
값이 고유하고 이전에 사용한 적이 없어야 합니다.
문제 해결
이 섹션에는 고객 문의가 발생할 수 있는 시나리오를 위한 권장사항이 포함되어 있습니다.
다중 사용자 계정
사용자의 기기에 Google 계정이 여러 개 있는데 잘못된 계정에서 Play 포인트를 사용한다면 Google에서는 상품을 다른 계정으로 전송할 수 없습니다. 마찬가지로 앱에서도 getPurchases()
메서드를 호출하여 상품을 전송할 수 없습니다. 이 시나리오에서는 고객 지원 작업을 사용하여 인앱 상품을 사용자에게 수동으로 제공하는 것이 좋습니다.
상품 지연 또는 누락
플레이어에게 리워드 상품이 지연되거나 누락된 경우 Google Play 도움말 문서에서 인앱 구매 문제 해결 가이드를 참고하세요.