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