iOS SDK でサブスクリプションのステータスを確認する

Adapty を使えば、サブスクリプションのステータス管理が簡単になります。プロダクト ID をコードに手動で埋め込む必要はなく、アクティブなアクセスレベルを確認するだけで、ユーザーのサブスクリプションステータスをスムーズに把握できます。

サブスクリプションのステータス確認を始める前に、App Store サーバー通知を設定してください。

アクセスレベルと AdaptyProfile オブジェクト

アクセスレベルは AdaptyProfile オブジェクトのプロパティです。アプリ起動時(ユーザーを識別するタイミングなど)にプロファイルを取得し、変更が発生したときに更新することをおすすめします。こうすることで、都度リクエストを送ることなくプロファイルオブジェクトを活用できます。

プロファイルの更新通知を受け取るには、以下のサブスクリプションステータスの更新をリッスンするセクションで説明している方法でプロファイルの変更を監視してください。

Adapty SDK がモバイルアプリにどのように統合されているか、実際の例を見てみませんか?ペイウォールの表示、購入処理、その他の基本機能を含む完全なセットアップを実演しているサンプルアプリをご覧ください。

サーバーからアクセスレベルを取得する

サーバーからアクセスレベルを取得するには、.getProfile() メソッドを使用します。

レスポンスパラメーター:

パラメーター説明
Profile

AdaptyProfile オブジェクト。通常、ユーザーがプレミアムアクセスを持っているかどうかを判断するには、プロファイルのアクセスレベルのステータスだけを確認すれば十分です。

.getProfile メソッドは常に API へのクエリを試みるため、最新の結果を返します。何らかの理由(インターネット接続がないなど)で Adapty SDK がサーバーから情報を取得できない場合は、キャッシュのデータが返されます。また、Adapty SDK は AdaptyProfile キャッシュを定期的に更新し、情報をできる限り最新の状態に保ちます。

.getProfile() メソッドはユーザープロファイルを返し、そこからアクセスレベルのステータスを取得できます。アプリごとに複数のアクセスレベルを設定することも可能です。たとえばニュースアプリで複数のトピックのサブスクリプションを独立して販売する場合、「sports」や「science」といったアクセスレベルを作成できます。ただし、ほとんどの場合はアクセスレベルは 1 つで十分なので、デフォルトの「premium」アクセスレベルをそのまま使用できます。

デフォルトの「premium」アクセスレベルを確認する例を示します。

サブスクリプションステータスの更新をリッスンする

ユーザーのサブスクリプションが変更されるたびに、Adapty はイベントを発火します。

Adapty からのメッセージを受け取るには、追加の設定が必要です。

Adapty.delegate = self

// To receive subscription updates, extend `AdaptyDelegate` with this method:
nonisolated func didLoadLatestProfile(_ profile: AdaptyProfile) {
    // handle any changes to subscription state
}

Adapty はアプリ起動時にもイベントを発火します。この場合、キャッシュされたサブスクリプションステータスが渡されます。

サブスクリプションステータスのキャッシュ

Adapty SDK に実装されたキャッシュはプロファイルのサブスクリプションステータスを保持します。これにより、サーバーが利用できない場合でも、キャッシュされたデータからプロファイルのサブスクリプションステータス情報を取得できます。

ただし、キャッシュから直接データをリクエストすることはできません。SDK は 1 分ごとにサーバーに問い合わせて、プロファイルに関する更新や変更を確認します。新しいトランザクションなどの変更があった場合は、サーバーとの同期を維持するためにキャッシュデータへ反映されます。