Appstore請求サービス対応SDKのベストプラクティス
アプリにAppstore請求サービス対応SDKを組み込むときは、以下のベストプラクティスに従ってください。
アプリ起動時の動作の改善
アプリの起動時にAppstore請求サービス対応SDKのAPIを呼び出すと、アプリの起動時間が長くなる可能性があり、ユーザーエクスペリエンスの低下につながります。ベストプラクティスとして、Amazonアプリストアでは、アプリの読み込み時に遅延が発生するのを避けるために、このようなサーバー側の呼び出しはバックグラウンドで行うことを推奨します。
UIの読み込みをブロックしない
統合ガイドの購入の取得では、onResume()
メソッドでqueryPurchasesAsync()
を呼び出して、ユーザーによる購入を照会するように指示されています。このAPIでは、Amazonのサーバーへのサーバー側呼び出しが必要になります。Google Play請求サービスのqueryPurchasesAsync()
メソッドとは異なり、Appstore請求サービス対応SDKのqueryPurchasesAsync()
メソッドはネットワーク呼び出しを行うため、リスナーコールバックが発生するまでの時間に影響が及びます。
起動時の遅延を防ぐために、アプリがAmazonのサーバーからのレスポンスを待機している間、UIの読み込みがブロックされないようにしてください。Amazonアプリストアでは、代わりにバックエンドサーバー上またはアプリ内に前回の購入ステータスをキャッシュして、それを使用することを推奨します。
queryPurchasesAsync()
からレスポンスを受け取ったら、アプリのUIを非同期で更新して、ユーザーの購入データに変更があれば反映させます。
queryPurchasesAsync()
呼び出しでのSKUの数を100に制限します。以下の図を参照すると、アプリの読み込み中にAppstore請求サービス対応SDKのAPIを呼び出したときの動作を視覚的に把握できます。
典型的なフロー: Appstore請求サービス対応SDKのAPI呼び出しによってUIの読み込みがブロックされる
次の図は、アプリの起動からアプリのUIの読み込みまでの手順を、Appstore請求サービス対応SDKのAPI呼び出しによってUIの読み込みがブロックされる場合について示したものです。
- ユーザーがアプリをクリックして起動します。
- アプリのUIの読み込み中、黒い画面が表示されます。
- アプリが起動します。アプリは、
onResume()
でUIスレッドからqueryPurchasesAsync()
を呼び出します。ネットワーク呼び出しが行われ、購入の詳細が取得されます。この間、ユーザーには黒い画面が表示され続けます。 - アプリは、購入済みアイテムへのアクセスをユーザーに許可します。
- アプリは、スプラッシュスクリーンを表示してUIの読み込みを続行します。
この典型的なフローでは、Appstore請求サービス対応SDKのAPI呼び出しが行われている間、ユーザーに黒い画面が数秒間表示されます。その結果、アプリの起動が遅く感じられます。
推奨フロー: Appstore請求サービス対応SDKのAPI呼び出しをバックグラウンドで行う
次の図は、アプリの起動からアプリのUIの読み込みまでの手順を、Appstore請求サービス対応SDKのAPIがバックグラウンドで呼び出される場合について示したものです。
- アプリは、過去の購入データをバックエンドサーバーまたはキャッシュに保存します。
- ユーザーがアプリをクリックして起動します。
- アプリはスプラッシュスクリーンを表示し、過去のデータに基づいてUIをロードします。サーバーから購入データを確認することはしません。
-
アプリはバックグラウンドで
queryPurchasesAsync()
を呼び出します。UIの読み込みはブロックされません。queryPurchasesAsync()
APIは、パラメーターとしてPurchasesResponseListener
オブジェクトを受け取ります。このPurchasesResponseListener
オブジェクトのonQueryPurchasesResponse()
メソッドに、アプリのUIを更新するロジックを追加できます。 - キャッシュ(またはバックエンド)を新しいデータと同期します。
- 必要に応じて、UIを更新するか切り替えて、コンテンツへのユーザーのアクセスをブロックまたはブロック解除します。
関連トピック
- Appstore請求サービス対応SDK - 概要と統合ガイド
- Google Play請求サービスインターフェイスの実装
- Appstore請求サービス対応定期購入型アイテム
- Appstore請求サービス対応SDKのトラブルシューティング
- Appstore請求サービス対応SDK APIリファレンス(英語のみ)
Last updated: 2024年10月14日