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

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

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

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

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

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

プロファイルを取得する

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

try {
  const profile = await adapty.getProfile();
} catch (error) {
  // handle the error
}

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

アプリでプロファイルの更新を自動的に受け取るには:

  1. adapty.addListener('onLatestProfileLoad') を使用してプロファイルの変更を監視します。ユーザーのサブスクリプションステータスが変わると、Adapty が自動的にこのメソッドを呼び出します。
  2. このメソッドが呼び出されたときに更新されたプロファイルデータを保存しておくことで、追加のネットワークリクエストなしにアプリ全体で利用できます。
class SubscriptionManager {
  private currentProfile: any = null;
  
  constructor() {
    // Listen for profile updates
    adapty.addListener('onLatestProfileLoad', (data) => {
      this.currentProfile = data.profile;
      // Update UI, unlock content, etc.
    });
  }
  
  // Use stored profile instead of calling getProfile()
  hasAccess(): boolean {
    return this.currentProfile?.accessLevels?.['YOUR_ACCESS_LEVEL']?.isActive ?? false;
  }
}

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

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

ペイウォールの表示や有料機能へのアクセス付与をすぐに判断する必要がある場合、ユーザーのプロファイルを直接確認できます。このアプローチは、アプリの起動時、プレミアムセクションへの入場時、または特定のコンテンツを表示する前など、さまざまなシーンで役立ちます。


const checkAccessLevel = async () => {
  try {
    const profile = await adapty.getProfile();
    return profile?.accessLevels?.['YOUR_ACCESS_LEVEL']?.isActive === true;
  } catch (error) {
    console.warn('Error checking access level:', error);
    return false; // Show paywall if access check fails
  }
};

const getAccessLevel = (profile: AdaptyProfile) => {
  return profile.accessLevels?.['YOUR_ACCESS_LEVEL'];
};

const initializePaywall = async () => {
  try {
    await loadPaywall();
    
    const hasAccess = await checkAccessLevel();
    if (!hasAccess) {
      // Show paywall if no access
    }
  } catch (error) {
    console.warn('Error initializing paywall:', error);
  }
};

次のステップ

サブスクリプションステータスの確認方法がわかったら、次はユーザープロファイルの操作について学び、ユーザーが購入したコンテンツに確実にアクセスできるようにしましょう。