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

С Adapty отслеживать статус подписки очень просто. Вам не нужно вручную прописывать идентификаторы продуктов в коде — достаточно проверить наличие активного уровня доступа.

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

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

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

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

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

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

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

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

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

ПараметрОписание
Profile

Объект AdaptyProfile. Как правило, для определения наличия у пользователя премиум-доступа к приложению достаточно проверить статус уровня доступа в профиле.

Метод .getProfile возвращает наиболее актуальный результат, поскольку всегда пытается обратиться к API. Если по какой-то причине (например, при отсутствии интернет-соединения) Adapty SDK не может получить данные с сервера, возвращаются данные из кэша. Важно учитывать, что Adapty 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
    }
} catch (error) {
    // handle the error
}

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

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

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

// Create an "onLatestProfileLoad" event listener
adapty.addEventListener('onLatestProfileLoad', profile => {
    // handle any changes to subscription state
});

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

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

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

Вместе с тем прямые запросы данных из кэша невозможны. SDK периодически опрашивает сервер каждую минуту для проверки обновлений профиля. При наличии изменений — новых транзакций или других обновлений — они передаются в кэшированные данные для синхронизации с сервером.