Інтеграція RevenueCat для управління підписками
RevenueCat вирішує конкретну проблему: синхронізувати статус підписки між iOS, Android та бекендом без написання власного сервера верифікації receipts. Замість того щоб самостійно розбиратися з Apple Server Notifications v2 і Google Play RTDN, отримуємо єдиний CustomerInfo об'єкт з актуальним статусом.
Що відбувається під капотом
RevenueCat SDK огортає нативний StoreKit (iOS) і Google Play Billing (Android). При покупці SDK надсилає receipt/purchaseToken на сервери RevenueCat, ті верифікують у Apple/Google й повертають нормалізований статус. На стороні RevenueCat зберігається історія всіх транзакцій — це дозволяє відновлювати доступ на нових пристроях без виклику нативного restore.
Інтеграція
// iOS — AppDelegate або @main
Purchases.configure(
with: Configuration.Builder(withAPIKey: "appl_xxxxx")
.with(appUserID: currentUser.id) // nil = анонімний
.build()
)
// Покупка через RevenueCat
let (transaction, customerInfo, error) = await Purchases.shared
.purchase(package: package)
if customerInfo?.entitlements["premium"]?.isActive == true {
unlockPremium()
}
Ключова концепція — entitlements. У дашборді RevenueCat створюємо entitlement premium, прив'язуємо до нього всі продукти (місячна підписка, річна, lifetime). У коді перевіряємо тільки entitlement, а не конкретний product ID. При додаванні нового тарифного плану — достатньо додати продукт в entitlement у дашборді, код не змінюється.
Синхронізація між платформами
Якщо користувач купив підписку на iOS і відкриває Android-версію — передаємо один і той же appUserID при конфігурації SDK на обох платформах. RevenueCat відда CustomerInfo з активним entitlement незалежно від платформи покупки. Це працює тільки якщо користувач аутентифікований у додатку — для анонімних RevenueCat генерує $RCAnonymousID, який не переноситься між пристроями автоматично.
Webhooks та серверна синхронізація
RevenueCat надсилає webhooks при будь-якій зміні статусу підписки: INITIAL_PURCHASE, RENEWAL, CANCELLATION, EXPIRATION, BILLING_ISSUE. Це повноцінна заміна Apple Server Notifications + Google RTDN в одному інтерфейсі. Настроюється в Project Settings → Integrations.
Для бекенду — один endpoint замість двох (Apple + Google), єдиний формат payload. Економить 2–3 дні розробки серверної частини.
Обмеження
RevenueCat бере 1% від revenue після $2500/місяць. Для більшості додатків це прийнятно в обмін на збережене час. Але при масштабі $100k+/місяць — лічіть, можливо вигідніше власна реалізація.
Терміни інтеграції — 2–3 дні: встановлення SDK, налаштування продуктів та entitlements у дашборді, інтеграція в існуючий flow аутентифікації, тестування в Sandbox/Test environment.







