ストアの拡張
iOS & Mac App Store

Android アプリ内課金 (IAP) ストアにおける、ストア間を横断してプロダクトをインストールする場合の問題

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 つの方法

  • 各ストアごとに一意の Key を使用する (これにより、一致しないストアからアップグレードのエラーメッセージが発生します)、または
  • 各ストアごとに一意の Bundle ID を使用する (これにより、インストールされたアプリが、ユーザーのために複製されます)。
ストアの拡張
iOS & Mac App Store