Categories
Android

Google Play를 통해 앱&인앱상품 프로모션 코드 만들기

Google Play 개발자 콘솔이 끊임없이 새로운 기능을 내놓고 있는 것 같네요. 이번에는 Apple의 리딤코드(Redeem Code)에 해당하는 구글의 프로모션 코드(Promotion Code)를 설정하고 배포하는 방법에 대해 알아보겠습니다.

google_play_promotion_01

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로 이를 잡아서 적절한 처리를 해주시면 될 것입니다. 자세한 구현에 대한 내용은 구글 개발 가이드를 참고하시기 바랍니다.

Categories
Android

2016년에 바뀌는 Google Play Games 퍼미션들 정리

Google Play Games가 로그인 부분을 대폭적으로 변경하려고 하는것 같습니다. 현재의 Play Game의 경우 로그인 과정에서 다양한 권한 요청을 수행하게 되는데 이 팝업이 생각보다 개발자스럽고 뭔가 요구하는것이 많아 보인다는 단점이 있습니다. 아마도 실제 통계로도 많은 유저들이 이 로그인 단계를 건너 뛰거나 포기하는게 아닐까 추측해 봅니다. 그래서 구글이 빼어든 칼은 놀랍게도 “게임마다 로그인한다”는 개념이 아니라 “구글플레이게임에 로그인 한다”는 개념입니다. 안드로이드폰에 Play Game Services의 기능을 담당하는 GameService라는 백그라운드 프로세스가 있는데 아마도 이 프로세스가 전체 로그인 세션을 직접 관리하게 되지 않을까 생각됩니다.

이 부분이 변경되면 어떤 게임에 한번만 로그인하면 이후의 모든 Play Game API를 탑재한 게임은 로그인이 이미 되어있는 상태가 되겠지요. 게임 개발자 입장에서는 왠지 멋진 업데이트 같습니다만 유저 입장에서는 반갑지 않은 소식이 될꺼 같군요. 하지만 설정에서 자동 로그인을 끌 수 있다고 하니 옵트아웃 방식으로 해당 기능을 피할 수 있기는 하겠네요.

이제 유저는 로그인한적도 없는데 게임내에서 저렇게 되어있는것을 경험하게 될 것 같습니다. 다음은 구글 개발자 블로그에 올라온 소개글 일부분을 번역한 내용입니다.


우리는 로그인 과정에서의 마찰과 유저가 게임 API를 호출할 때 발생하는 불필요한 퍼미션 요청을 줄이기 위해 새로운 모델로 변경을 하고 있습니다. 새로운 인터렉션은 다음과 같습니다.

  • 플레이어는 게임당 한번의 로그인이 아닌 계정당 한번의 로그인 과정만을 거치게 됩니다.
  • 플레이어는 구글플레이서비스를 사용하기 위해 더이상 그들의 계정을 구글플러스 계정으로 업그레이드 할 필요가 없어졌습니다.
  • 플레이어가 최초 한번 로그인을 하게 되면 그들은 더이상 새로운 게임을 위해 로그인을 할 필요가 없어집니다. 새로운 게임들에서는 자동으로 로그인이 진행될 것입니다. (플레이어는 플레이게임 설정에서 자동 로그인 설정을 끌 수 있습니다)

장점 :

  • 유저가 최초에 한번 로그인을 하게 되면 새로운 게임들은 아무런 유저의 인터렉션 없이 로그인이 가능해 집니다.
  • 각각의 게임들에 로그인 과정에 발생하는 개인정보 획득 등의 동의 화면이 없어집니다. 각각의 새로운 게임마다 자동으로 로그인이 처리될 것입니다. (사라질 화면은 다음과 같은 동의 화면입니다)

유저의 개인정보를 존중하고 그들의 실제 이름이 노출되지 않도록 하기 위해, 우리는 마찬가지로 플레이어들의 ID 방식을 변경해야 합니다.

  • 기존의 플레이어 : 로그인할 때 게임은 계속해서 그들의 구글 플러스 ID (예전 문서에서는 player ID라고 불렀던)를 가져옵니다.
  • 새로운 플레이어 : 게임은 예전에 사용된적이 없는 새로운 player ID를 가져옵니다.

잠재적 이슈

대부분의 게임은 장애 요소가 변경해야 하는 부분이 없을것으로 보입니다. 하지만 극소수의 경우에 한해 변화가 필요할 수 있습니다. 아래에는 몇가지 문제점과 잠재적인 해결방안 입니다.

  1. 불필요한 구글 플러스 스코프를 물어보기
    • 문제점 : 당신의 유저가 불필요한 잠재적으로 방해가 되는 권한요청 팝업 윈도우를 보게 됨
    • 해결책 : 명확하게 유저에게 요구되는 스코프가 아닌 이상 추가적인 요청을 하지 않습니다.
  2. Play Game의 player ID를 다른 게임이 아닌 Google API에 사용하기
    • 문제점 : 다른 엔드포인트로부터 잘못된 데이터를 받게 될 것입니다.
    • 해결책 : 다른 Google API들에는 player ID를 사용하지 않습니다.
  3. 모바일/클라이언트 엑세스토큰을 서버에서 사용하기
    • 문제점 : 당신의 엑세스 토큰은 당신이 찾는 정보를 포함하고 있지 않으며 최초에 사용하는것을 추천하지 않습니다.
    • 해결책 : 서버용 토큰 발급을 위해 새로운 GetServerAuthCode API를 사용하십시오.

자세한 기술적인 구현 부분은 구글 블로그의 가이드를 참고하시기 바랍니다.

Exit mobile version