# Android ストア間インストールの問題

> 複数の Android アプリケーションにデプロイする際の購入履歴の損失と同期の問題を理解し、解決します。

共有 Android バンドル ID を使用して複数の Android アプリ内課金ストア（Google Play ストアなど）に同時に公開する場合、ストア間を横断してインストールする必要があります。このページでは、これらの競合の結果と、問題の解決方法について説明します。

ストア間を横断してインストールするシナリオは、ユーザーが 1 つのストア (ストア A) からアプリケーションをインストールし、別のストア (ストア B) のアプリケーションでインストールをアップグレードするシナリオです。ユーザーのインストールをアップグレードする機会は、最新バージョンのアプリケーションを提供しているストアに帰属します。このシナリオは、アプリケーションの両方のビルドで同じ Android バンドル識別子と署名キーを使用する場合に発生する可能性があります。

例えば、`com.foo.bar`がgoogle playと別のメーカーのアプリストアの両方に公開されている場合、両方のストアがインストールされているユーザーは、アプリケーションを一方のストアからインストールし、後でもう一方のストアから更新できます。その結果、IAP購入履歴が失われ、ユーザーが以前に購入したデジタル製品をリストアできなくなる可能性があります。

## ストア間のインストールの問題の影響##impact-of-cross-store-installation-issues

ストア間の競合は、IAP を使用するアプリケーションで解決困難なエンドユーザーの問題を引き起こす可能性があります。アンインストールまたは再インストール時に購入を失い、ストア間を横断したアップグレードによって中断された未了の購入を失う場合があります。

その結果生じる IAP 問題は次のとおりです。

| 問題の種類              | 説明                                                                                                                                                                                                   |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| 不完全な購入の紛失          | 購入が承認された後、アプリケーションがストアの課金システムからの購入の受信を確認する前にユーザーがアップグレードした場合に発生します。これは、アプリケーションがクラウドインベントリリサービスとタイムリーに同期できなかったり、この新しい IAP をローカルインベントリリデータベースに保存する前にアプリケーションがクラッシュした場合に発生する可能性があります。                  |
| ストア A からの購入の源泉徴収   | ユーザーがストアAのIAPトランザクションを完了した後にストアBからアプリケーションを再インストールした場合に発生します。これらのトランザクションは復元できません。多くのストアでは、アプリケーションが他のストアの IAP システムにアクセスすることを明示的に禁止しています。これを回避するには、依存ユーザー ID サービスとともにクラウドインベントリリシステムを利用します。          |
| ダイバージェント IAP 製品リスト | ストア B のアプリケーション内のアップグレードされた製品リストが、ストア A のバージョンのリストから乖離した場合に発生します。多様な IAP カタログを提供できます。これにより、ストア B バージョンによって一貫性のないローカルインベントリが読み取られたときにアプリケーションエラーが結果したり、ストア B バージョンで使用できない以前に購入したインベントリがユーザーが失われたりします。 |

## ストア間のインストールの問題の解決##resolve-cross-store-installation-issues

ストア間の競合を解決するには 2 つの方法があります。

* ストアごとに一意の署名キーを使用します。これにより、競合するストアからのアップグレードエラーメッセージが返されます。
* ストアごとに一意のバンドル識別子を使用します。この結果、ユーザーにインストールされたアプリケーションが複製される可能性があります。
