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

ユーザーが有料コンテンツにアクセスできるか、ペイウォールを表示するかを判断するには、プロファイルのアクセスレベルを確認する必要があります。

この記事では、プロファイルの状態にアクセスして、ユーザーにペイウォールを表示するか有料機能へのアクセスを許可するかを判断する方法を説明します。

サブスクリプションステータスを取得する

ペイウォールまたは有料コンテンツを表示するかどうかを決める際は、プロファイルのアクセスレベルを確認します。方法は2つあります:

  • 最新のプロファイルデータが即座に必要な場合(アプリ起動時など)や強制的に更新したい場合は getProfile を呼び出す。
  • プロファイルの自動更新を設定して、サブスクリプションステータスが変わるたびにローカルコピーを自動更新する。

デフォルトでは、premium アクセスレベルがAdaptyにすでに存在します。アクセスレベルを複数設定する必要がない場合は、premium をそのまま使用できます。

プロファイルを取得する

サブスクリプションステータスを取得する最も簡単な方法は、getProfile メソッドを使ってプロファイルにアクセスすることです:

サブスクリプション更新を受け取る

アプリでプロファイルの更新を自動的に受け取りたい場合:

  1. 任意の型で AdaptyDelegate プロトコルに準拠し、didLoadLatestProfile メソッドを実装します。ユーザーのサブスクリプションステータスが変わるたびに、Adaptyがこのメソッドを自動的に呼び出します。以下の例では、サブスクリプションのワークフローやユーザープロファイルの処理を支援する SubscriptionManager 型を使用しています。この型は依存性注入で渡したり、UIKitアプリのシングルトンとして設定したり、アプリのメイン構造体からSwiftUI環境に追加したりできます。
  2. このメソッドが呼び出されたときに更新されたプロファイルデータを保存して、追加のネットワークリクエストなしにアプリ全体で使用できるようにします。
class SubscriptionManager: AdaptyDelegate {

    nonisolated func didLoadLatestProfile(_ profile: AdaptyProfile) {
        let hasAccess = profile.accessLevels["YOUR_ACCESS_LEVEL"]?.isActive ?? false
        // Update UI, unlock content, etc.
    }
}

// Set delegate after Adapty activation
Adapty.delegate = subscriptionManager

Adaptyはアプリ起動時に didLoadLatestProfile を自動的に呼び出し、デバイスがオフラインの場合でもキャッシュされたサブスクリプションデータを提供します。

プロファイルとペイウォールのロジックを連携させる

ペイウォールを表示するか有料機能へのアクセスを許可するかを即座に判断したい場合、ユーザーのプロファイルを直接確認できます。このアプローチは、アプリ起動時、プレミアムセクションへの入場時、特定コンテンツを表示する前などのシナリオで役立ちます。

次のステップ

サブスクリプションステータスの追跡方法がわかったところで、ユーザープロファイルの操作方法を確認して、既存の認証システムや有料アクセスの共有設定と適切に連携していることを確かめましょう。

独自の認証システムがない場合でも、Adaptyがユーザーを管理しますので問題はありません。ただし、Adaptyが匿名ユーザーをどのように扱うかについてはガイドを参照することをおすすめします。