Проверка статуса подписки в Capacitor SDK
Чтобы решить, может ли пользователь получить доступ к платному контенту или нужно показать ему пейвол, необходимо проверить его уровень доступа в профиле.
В этой статье описано, как читать состояние профиля и решать, что показывать пользователю — пейвол или платный контент.
Получение статуса подписки
Когда нужно решить, показать пейвол или платный контент, вы проверяете уровень доступа в профиле пользователя. Есть два варианта:
- Вызвать
getProfile, если нужны актуальные данные прямо сейчас (например, при запуске приложения) или требуется принудительное обновление. - Настроить автоматическое обновление профиля, чтобы хранить локальную копию, которая автоматически обновляется при изменении статуса подписки.
Получить профиль
Самый простой способ узнать статус подписки — использовать метод getProfile для получения профиля:
try {
const profile = await adapty.getProfile();
} catch (error) {
// handle the error
}
Подписаться на обновления подписки
Чтобы автоматически получать обновления профиля в приложении:
- Используйте
adapty.addListener('onLatestProfileLoad')для отслеживания изменений профиля — Adapty автоматически вызовет этот метод при каждом изменении статуса подписки пользователя. - Сохраняйте обновлённые данные профиля при вызове этого метода, чтобы использовать их по всему приложению без лишних сетевых запросов.
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 = () => {
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);
}
};
Дальнейшие шаги
Теперь, когда вы знаете, как отслеживать статус подписки, узнайте, как работать с профилями пользователей, чтобы они могли получить доступ к тому, за что заплатили.