Проверка статуса подписки в Capacitor SDK
С Adapty отслеживать статус подписки очень просто. Вам не нужно вручную прописывать ID продуктов в коде. Достаточно проверить наличие активного уровня доступа, чтобы убедиться в статусе подписки пользователя.
Перед проверкой статуса подписки (нажмите, чтобы развернуть)
- Для iOS настройте App Store Server Notifications
- Для Android настройте Real-time Developer Notifications (RTDN)
Уровень доступа и объект 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 периодически обращается к серверу каждую минуту, чтобы проверить наличие обновлений или изменений в профиле. Если есть какие-либо изменения — например, новые транзакции или другие обновления — они будут переданы в кэшированные данные, чтобы поддерживать их синхронизацию с сервером.