Android 共有バンドル ID を使用して複数の Android アプリ内課金ストア (Google など) に同時に公開する場合に、ストア間を横断してプロダクトをインストールすることで問題が発生する可能性があります。このページでは、これらの競合の結果と問題の解決方法について説明します。
ストア間を横断してインストールする際の問題は、あるストア (ストア A) からアプリをインストールし、もう 1 つのストア (ストア B) からのアプリで先にインストールしたストア A のアプリをアップグレードするときなどに起こります。ユーザーのインストールをアップグレードすることができるのは、より新しいバージョンのアプリを提供しているストアです。この問題は、バージョンの違うアプリのビルドに、同じ Android Bundle ID と Key を使用している場合に発生します。
例えば、com.foo.bar
が Google Play と Amazon アプリストアの両方にパブリッシングされているとします。両方のアプリストアを使用しているユーザーは、com.foo.bar
を Amazon アプリストアからインストールし、更新されたバージョンを Google Play から取得できます。これにより、結果的に IAP デジタルプロダクトトランザクションが失われ、以前に行われたトランザクションを復元できなくなります。
複数のストアにまたがる問題は、アプリ内課金を利用するアプリに対して解決困難なエンドユーザー側の問題を引き起こすことがあります。ユーザーはアンインストールや再インストールのときに購入したプロダクトの紛失や、確定前の購入がストア間を横断したアップグレードによって妨げられていることに気づく場合があります。
結果として発生する IAP の問題
確定前の購入の紛失 購入の承認は済んでいる状態でも、アプリがストアの請求システムからの購入受理を確認する前にユーザーがアップグレードを行った場合に発生します。この問題は、アプリがクラウドインベントリーサービスとの適時な同期に失敗したり、新しいアプリ内の購入をローカルのインベントリーデータベースに保存する前にアプリがクラッシュすると発生します。
ストア A からの購入の差し止め ユーザーがストア A で IAP トランザクションを完了した後に、ストア B からアプリを再インストールした場合に発生します。これらのトランザクションは回復することができません。多くのストアは明示的に、アプリに対し他のストアの IAP システムからのアクセスを禁止しています。これを回避するには、依存ユーザー ID サービスを持つクラウドインベントリーサービスを使用します。
相違する IAP プロダクトリスト ストア B のアプリのアップグレードされたプロダクトのリストが、ストア A のものと異なる場合に発生します。ユーザーが多種類の IAP カタログを使用する場合もあります。しかし、これにより、矛盾するローカルインベントリーがストア B バージョンによって読み込まれるとき、アプリケーションエラーが発生することがあります。また、ユーザーが、ストア B のバージョンでは不可能な以前のインベントリーを失う場合もあります。
ストア間にまたがる問題を解決する 2 つの方法