Google Play 개발자 콘솔이 끊임없이 새로운 기능을 내놓고 있는 것 같네요. 이번에는 Apple의 리딤코드(Redeem Code)에 해당하는 구글의 프로모션 코드(Promotion Code)를 설정하고 배포하는 방법에 대해 알아보겠습니다.
Google Play의 판매중인 앱을 선택해 보면 프로모션이라는 메뉴가 있는것을 볼 수 있습니다. 여기에 들어가서 새 프로모션 추가를 선택해 줍니다.
프로모션 코드를 사용하는것에 대해 약관 동의 페이지가 뜹니다. 프로모션 코드를 배포하여 유저들로 하여금 유료로 판매중인 앱을 무료로 다운받게 하거나 인앱 상품을 무료로 획득하게 할 수 있습니다. 그와 관련된 약관입니다.
우선 유료 게임을 무료로 다운받을 수 있는 리딤 코드를 만들어 보겠습니다. 배포하는 코드가 유효하게 동작할 수 있는 기간을 설정하고 몇개를 발행할지도 결정할 수 있습니다. 이 프로모션 코드는 현재 분기당 최대 500개를 발행 할 수 있는 제한이 있습니다.
유료앱은 이정도 설정으로 간단하게 끝나지만 인앱 상품의 경우 조금 복잡합니다. 인앱 상품을 선택하자마자 다음과 같은 팝업이 뜨게 됩니다. 실제 존재하는 인앱 상품의 ID를 입력해주면 해당 정보가 조회됩니다.
정상적으로 인앱 상품의 프로모션 코드가 생성되었습니다. 이렇게 만들어진 코드를 유저에게 배포하면 유저는 이 코드를 구글플레이 또는 앱 내에서 사용할 수 있습니다.
우선 유료앱 다운로드 프로모션 코드의 경우 다음과 같이 Google Play 메뉴에서 코드 사용 메뉴를 통해 사용할 수 있습니다. 또는 https://play.google.com/store?code={CODE} 와 같은 URL 형태로 만들어서 배포하면 곧바로 다운로드 화면으로 진입할 수 있습니다.
인앱 구매 프로모션의 경우에도 위와 같이 Google Play 메뉴에서 사용할 수 있으며 또한 게임내 상품 구매창에서 코드 사용을 통해서 바로 사용이 가능합니다.
이와 같은 프로모션 기능을 정상적으로 사용하기 위해서는 앱 역시 추가적인 처리가 필요합니다. 우선 Google Play 프로모션 메뉴에서 인앱상품 프로모션 코드를 사용할 경우 앱내에서 특정 시점에 구매 내역을 불러와 특별한 처리를 해줄 필요가 있습니다.
앱이 시작되거나 백그라운드에서 돌아올때(onResume()) 앱에서 getPurchases()를 호출해 주어야 합니다. 이 API는 모든 소비(Consume)되지 않은 상품의 리스트를 반환해 줍니다. 처리되지 않은 상품 정보가 있다면 그것을 처리해 주면 됩니다.
또한 앱이 백그라운드에서 구동중인 상태에서 Google Play에서 코드가 사용되었다면 com.android.vending.billing.PURCHASES_UPDATED 브로드캐스트가 발생합니다. BroadcastReceiver로 이를 잡아서 적절한 처리를 해주시면 될 것입니다. 자세한 구현에 대한 내용은 구글 개발 가이드를 참고하시기 바랍니다.