Проверка статуса подписки в Capacitor SDK

Чтобы решить, может ли пользователь получить доступ к платному контенту или нужно показать ему пейвол, необходимо проверить его уровень доступа в профиле.

В этой статье описано, как читать состояние профиля и решать, что показывать пользователю — пейвол или платный контент.

Получение статуса подписки

Когда нужно решить, показать пейвол или платный контент, вы проверяете уровень доступа в профиле пользователя. Есть два варианта:

  • Вызвать 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);
  }
};

Дальнейшие шаги

Теперь, когда вы знаете, как отслеживать статус подписки, узнайте, как работать с профилями пользователей, чтобы они могли получить доступ к тому, за что заплатили.