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

С Adapty отслеживать статус подписки очень просто. Вам не нужно вручную прописывать ID продуктов в коде. Достаточно проверить наличие активного уровня доступа, чтобы убедиться в статусе подписки пользователя.

Перед проверкой статуса подписки (нажмите, чтобы развернуть)

Уровень доступа и объект AdaptyProfile

Уровни доступа — это свойства объекта AdaptyProfile. Рекомендуем получать профиль при запуске приложения — например, когда вы идентифицируете пользователя, — и обновлять его при каждом изменении. Так вы сможете работать с объектом профиля без лишних запросов. Чтобы получать уведомления об обновлениях профиля, подпишитесь на изменения профиля, как описано в разделе Отслеживание изменений профиля, включая уровни доступа ниже.

Хотите увидеть реальный пример интеграции Adapty SDK в мобильное приложение? Посмотрите наши примеры приложений — они демонстрируют полную настройку: отображение пейволов, совершение покупок и другие базовые функции.

Получение уровня доступа с сервера

Чтобы получить уровень доступа с сервера, используйте метод .getProfile():


try {
  const profile = await adapty.getProfile();
  console.log('Profile retrieved successfully');
} catch (error) {
  console.error('Failed to get profile:', error);
}

Параметры ответа:

ПараметрОписание
profileОбъект AdaptyProfile. Как правило, достаточно проверить статус уровня доступа профиля, чтобы определить, есть ли у пользователя премиум-доступ к приложению. Метод .getProfile всегда запрашивает API и возвращает максимально актуальные данные. Если по какой-либо причине (например, при отсутствии интернета) SDK не может получить данные с сервера, возвращаются данные из кеша. Важно учитывать, что SDK регулярно обновляет кеш AdaptyProfile, чтобы информация оставалась как можно более актуальной.
Метод .getProfile() возвращает профиль пользователя, из которого можно получить статус уровня доступа. В одном приложении может быть несколько уровней доступа. Например, если у вас новостное приложение и вы продаёте подписки на разные темы отдельно, можно создать уровни доступа «sports» и «science». Но в большинстве случаев достаточно одного уровня доступа — тогда можно просто использовать стандартный уровень «premium».

Вот пример проверки стандартного уровня доступа «premium»:


try {
  const profile = await adapty.getProfile();
  
  const isActive = profile.accessLevels?.['premium']?.isActive;
  if (isActive) {
    // Grant access to premium features
    console.log('User has premium access');
  } else {
    console.log('User does not have premium access');
  }
} catch (error) {
  console.error('Failed to check subscription status:', error);
}

Прослушивание обновлений статуса подписки

Когда статус подписки пользователя меняется, Adapty генерирует событие.

Чтобы получать сообщения от Adapty, необходима дополнительная настройка:


// Create an "onLatestProfileLoad" event listener
adapty.addListener('onLatestProfileLoad', (data) => {
  const profile = data.profile;
  const isActive = profile.accessLevels?.['premium']?.isActive;
  
  if (isActive) {
    console.log('Subscription status updated: User has premium access');
  } else {
    console.log('Subscription status updated: User does not have premium access');
  }
});

Adapty также отправляет событие при запуске приложения. В этом случае передаётся кешированный статус подписки.

Кэш статуса подписки

Кэш в SDK хранит статус подписки профиля. Это значит, что даже если сервер недоступен, приложение может обратиться к кэшированным данным и получить информацию о статусе подписки пользователя. Однако важно учитывать, что прямые запросы данных из кэша невозможны. SDK периодически обращается к серверу каждую минуту, чтобы проверить наличие обновлений или изменений в профиле. Если есть какие-либо изменения — например, новые транзакции или другие обновления — они будут переданы в кэшированные данные, чтобы поддерживать их синхронизацию с сервером.