Проверка статуса подписки в Kotlin Multiplatform SDK
Чтобы решить, может ли пользователь получить доступ к платному контенту или должен ли он увидеть пейвол, нужно проверить его уровень доступа в профиле.
В этой статье показано, как обращаться к состоянию профиля для принятия решений: показывать пейвол или открывать платные возможности.
Получение статуса подписки
Когда вы решаете, показывать ли пользователю пейвол или платный контент, вы проверяете его уровень доступа в профиле. Есть два варианта:
- Вызовите
getProfile, если нужны актуальные данные прямо сейчас (например, при запуске приложения) или хотите принудительно обновить профиль. - Настройте автоматические обновления профиля, чтобы хранить локальную копию, которая обновляется автоматически при изменении статуса подписки.
Получить профиль
Самый простой способ получить статус подписки — использовать метод getProfile:
Adapty.getProfile()
.onSuccess { profile ->
// check the access
}
.onError { error ->
// handle the error
}
Подписаться на обновления подписки
Чтобы автоматически получать обновления профиля в приложении:
- Используйте
Adapty.setOnProfileUpdatedListener()для отслеживания изменений профиля — Adapty будет вызывать этот метод автоматически при каждом изменении статуса подписки пользователя. - Сохраняйте обновлённые данные профиля при каждом вызове метода, чтобы использовать их в приложении без лишних сетевых запросов.
class SubscriptionManager {
private var currentProfile: AdaptyProfile? = null
init {
// Listen for profile updates
Adapty.setOnProfileUpdatedListener { profile ->
currentProfile = profile
// Update UI, unlock content, etc.
}
}
// Use stored profile instead of calling getProfile()
fun hasAccess(): Boolean {
return currentProfile?.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true
}
}
Adapty автоматически вызывает слушатель обновлений профиля при запуске приложения, предоставляя кэшированные данные о подписке даже при отсутствии интернета.
Связь профиля с логикой пейвола
Когда нужно оперативно решить, показывать ли пейвол или открывать доступ к платным функциям, можно проверить профиль пользователя напрямую. Это удобно при запуске приложения, входе в разделы с премиум-контентом или перед отображением определённого контента.
private fun checkAccessAndShowPaywall() {
// First, check if user has access
Adapty.getProfile()
.onSuccess { profile ->
val hasAccess = profile.accessLevels?.get("YOUR_ACCESS_LEVEL")?.isActive == true
if (!hasAccess) {
// User doesn't have access, show paywall
showPaywall()
} else {
// User has access, show premium content
showPremiumContent()
}
}
.onError { error ->
// If we can't check access, show paywall as fallback
showPaywall()
}
}
private fun showPaywall() {
// Get and display paywall using the KMP SDK
Adapty.getPaywall("YOUR_PLACEMENT_ID")
.onSuccess { paywall ->
if (paywall.hasViewConfiguration) {
val paywallView = AdaptyUI.createPaywallView(paywall = paywall)
paywallView?.present()
} else {
// Handle remote config paywall or show custom UI
handleRemoteConfigPaywall(paywall)
}
}
.onError { error ->
// Handle paywall loading error
showError("Unable to load paywall")
}
}
private fun showPremiumContent() {
// Show your premium content here
// This is where you unlock paid features
}
Дальнейшие шаги
Теперь, когда вы знаете, как отслеживать статус подписки, узнайте, как работать с профилями пользователей, чтобы они могли получить доступ к тому, за что заплатили.