공유 Android 번들 식별자를 사용하여 동시에 여러 Android 인앱 스토어(Samsung 및 Google 등)에 퍼블리시하면 크로스 스토어 설치 문제가 발생합니다. 이 페이지에서는 이런 충돌로 인해 초래되는 결과와 문제를 해결하는 방법에 대해 설명합니다.
크로스 스토어 설치 시나리오는 사용자가 한 스토어(A 스토어)에서 구매한 애플리케이션을 설치한 다음, 이 애플리케이션을 다른 스토어(B 스토어)에서 구매한 애플리케이션으로 업그레이드하는 경우입니다. 사용자 설치본 업그레이드 기회는 최신 애플리케이션 버전을 호스트하는 스토어에 부여됩니다. 이 시나리오는 두 애플리케이션 빌드에서 모두 동일한 Android 번들 식별자와 서명 키를 사용하는 경우에 발생할 수 있습니다.
예를 들어 com.foo.bar
가 Google Play 및 Amazon Appstore에 퍼블리시됩니다. 두 앱 스토어를 모두 설치한 사용자는 com.foo.bar
를 Amazon Apps에서 설치하고 업데이트된 버전을 Google Play에서 받을 수 있습니다. 그러면 IAP 디지털 상품 트랜잭션을 잃고 이전에 완료한 트랜잭션을 복원할 수 없게 될 수 있습니다.
크로스 스토어 충돌로 인해 IAP를 사용하는 애플리케이션에서 처리하기 어려운 최종 사용자 문제가 발생할 수 있습니다. 사용자는 제거/재설치 후에 구매를 잃고 진행 중에 크로스 스토어 업그레이드로 인해 중단되는 구매를 잃을 수 있습니다.
이로 인해 다음과 같은 IAP 문제가 발생합니다.
완료되지 않은 구매를 잃게 됩니다. 이 문제는 구매가 승인된 후 애플리케이션에서 구매 상품 수신을 확인하기 전에 사용자가 업그레이드하는 경우에 발생합니다. 이 상황은 애플리케이션이 클라우드 인벤토리 서비스와 제 때 동기화되지 않거나 이 새로운 IAP를 로컬 인벤토리 데이터베이스에 저장하기 전에 앱이 크래시되는 경우에 발생할 수 있습니다.
A 스토어에서 구매를 보류합니다. 이 문제는 스토어 A에서 IAP 트랜잭션을 완료한 후 스토어 B에서 애플리케이션을 다시 설치하는 경우에 발생합니다. 이런 트랜잭션은 복원할 수 없습니다. 여러 스토어는 애플리케이션에서 다른 스토어의 IAP 시스템에 액세스하는 것을 명시적으로 불허합니다. 이 문제를 해결하려면 클라우드 인벤토리 시스템을 시스템에 의존하는 사용자 ID 서비스와 함께 이용해야 합니다.
서로 다른 IAP 상품 리스트가 작성됩니다. 이 문제는 B 스토어 애플리케이션의 업그레이드된 상품 리스트가 A 스토어 버전의 리스트와 다른 경우에 발생합니다. 이 문제가 발생하면 B 스토어 버전에서 불일치하는 로컬 인벤토리를 읽는 경우 애플리케이션 오류가 발생하거나, 사용자가 이전에 구매한 B 스토어를 통해 제공되지 않는 인벤토리를 잃을 수 있습니다.
다음 두 가지 방법으로 크로스 스토어 충돌 문제를 해결할 수 있습니다.
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.