공유 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 스토어를 통해 제공되지 않는 인벤토리를 잃을 수 있습니다.
다음 두 가지 방법으로 크로스 스토어 충돌 문제를 해결할 수 있습니다.