開発者コンソール

Appstore請求サービス対応SDKのベストプラクティス

Appstore請求サービス対応SDKのベストプラクティス

アプリにAppstore請求サービス対応SDKを組み込むときは、以下のベストプラクティスに従ってください。

アプリ起動時の動作の改善

アプリの起動時にAppstore請求サービス対応SDKのAPIを呼び出すと、アプリの起動時間が長くなる可能性があり、ユーザーエクスペリエンスの低下につながります。ベストプラクティスとして、Amazonアプリストアでは、アプリの読み込み時に遅延が発生するのを避けるために、このようなサーバー側の呼び出しはバックグラウンドで行うことを推奨します。

UIの読み込みをブロックしない

統合ガイドの購入の取得では、onResume()メソッドでqueryPurchasesAsync()を呼び出して、ユーザーによる購入を照会するように指示されています。このAPIでは、Amazonのサーバーへのサーバー側呼び出しが必要になります。Google Play請求サービスのqueryPurchasesAsync()メソッドとは異なり、Appstore請求サービス対応SDKのqueryPurchasesAsync()メソッドはネットワーク呼び出しを行うため、リスナーコールバックが発生するまでの時間に影響が及びます。

起動時の遅延を防ぐために、アプリがAmazonのサーバーからのレスポンスを待機している間、UIの読み込みがブロックされないようにしてください。Amazonアプリストアでは、代わりにバックエンドサーバー上またはアプリ内に前回の購入ステータスをキャッシュして、それを使用することを推奨します。

queryPurchasesAsync()からレスポンスを受け取ったら、アプリのUIを非同期で更新して、ユーザーの購入データに変更があれば反映させます。

以下の図を参照すると、アプリの読み込み中にAppstore請求サービス対応SDKのAPIを呼び出したときの動作を視覚的に把握できます。

典型的なフロー: Appstore請求サービス対応SDKのAPI呼び出しによってUIの読み込みがブロックされる

次の図は、アプリの起動からアプリのUIの読み込みまでの手順を、Appstore請求サービス対応SDKのAPI呼び出しによってUIの読み込みがブロックされる場合について示したものです。

フローの説明は以下の手順を参照
  1. ユーザーがアプリをクリックして起動します。
  2. アプリのUIの読み込み中、黒い画面が表示されます。
  3. アプリが起動します。アプリは、onResume()でUIスレッドからqueryPurchasesAsync()を呼び出します。ネットワーク呼び出しが行われ、購入の詳細が取得されます。この間、ユーザーには黒い画面が表示され続けます。
  4. アプリは、購入済みアイテムへのアクセスをユーザーに許可します。
  5. アプリは、スプラッシュスクリーンを表示してUIの読み込みを続行します。

この典型的なフローでは、Appstore請求サービス対応SDKのAPI呼び出しが行われている間、ユーザーに黒い画面が数秒間表示されます。その結果、アプリの起動が遅く感じられます。

次の図は、アプリの起動からアプリのUIの読み込みまでの手順を、Appstore請求サービス対応SDKのAPIがバックグラウンドで呼び出される場合について示したものです。

フローの説明は以下の手順を参照
  1. アプリは、過去の購入データをバックエンドサーバーまたはキャッシュに保存します。
  2. ユーザーがアプリをクリックして起動します。
  3. アプリはスプラッシュスクリーンを表示し、過去のデータに基づいてUIをロードします。サーバーから購入データを確認することはしません。
  4. アプリはバックグラウンドでqueryPurchasesAsync()を呼び出します。UIの読み込みはブロックされません。

    queryPurchasesAsync() APIは、パラメーターとしてPurchasesResponseListenerオブジェクトを受け取ります。このPurchasesResponseListenerオブジェクトのonQueryPurchasesResponse()メソッドに、アプリのUIを更新するロジックを追加できます。

  5. キャッシュ(またはバックエンド)を新しいデータと同期します。
  6. 必要に応じて、UIを更新するか切り替えて、コンテンツへのユーザーのアクセスをブロックまたはブロック解除します。

Last updated: 2023年10月27日