RevenueCat: як налаштувати підписку в iOS-застосунку
Автор: Mehdi Azizi
Оновлено , 7 хв
RevenueCat пов'язує твої продукти з App Store Connect із застосунком і керує правами доступу. Ось кроки, щоб підключити першу підписку в iOS.
Чому RevenueCat, а не лише StoreKit
StoreKit, фреймворк Apple, дає змогу продавати підписку без жодного стороннього сервісу. Але для новачка самостійно написати всю логіку покупки, відновлення й перевірки прав доступу означає багато коду, який треба підтримувати, ще й з граничними випадками, про які легко забути: зміна пристрою, закінчення терміну, повернення коштів.
RevenueCat стоїть між App Store Connect і твоїм застосунком: він читає твої продукти, керує активними підписками й позбавляє тебе потреби писати цей шар самому. Ціну та пропозиції ти контролюєш із панелі керування, не перевипускаючи застосунок після кожної зміни.
Крок 1: створи продукти в App Store Connect
Перш ніж братися за RevenueCat, продукти мають існувати на боці Apple. В App Store Connect створи групу підписок, а потім один або кілька рівнів із тривалістю, наприклад місячний чи річний, і ціною для кожної території. Заповни також тексти, які бачить користувач для кожного рівня: Apple вимагає їх, перш ніж прийняти продукт на перевірку.
Часта помилка на цьому етапі: продукт створено, але так і не подано на першу перевірку застосунку разом із пов'язаною версією. Продукт в очікуванні, який ніколи не входив у подання застосунку, залишається невидимим для твоїх користувачів, навіть якщо RevenueCat його вже бачить.
Крок 2: підключи RevenueCat до застосунку
У RevenueCat ти створюєш проєкт, підключаєш ключ API App Store Connect, щоб RevenueCat автоматично синхронізував твої продукти, а потім визначаєш "entitlements", тобто права доступу. Entitlement означає те, що відкриває підписка, наприклад повний доступ до застосунку, незалежно від того, який саме продукт його активував.
Цей проміжний рівень корисний: якщо пізніше ти зміниш структуру пропозицій, наприклад додаси річний рівень, ти просто прив'яжеш новий продукт до того самого entitlement, не чіпаючи код, який перевіряє доступ у застосунку.
На боці застосунку SDK RevenueCat для React Native встановлюється в проєкт Expo через окремий плагін і надає просту функцію, щоб дізнатися, чи має поточний користувач активний entitlement.
Крок 3: збудуй свій paywall
Paywall це екран, який показує пропозицію і запускає покупку. RevenueCat пропонує paywall'и, які налаштовуються з панелі керування й змінюються без перевипуску застосунку. Або ж можеш зробити власний за допомогою SDK, якщо хочеш повністю контролювати дизайн.
Розміщення важить не менше за дизайн. Paywall, показаний до того, як людина побачила цінність застосунку, зазвичай конвертує гірше, ніж paywall одразу після першої успішної дії. Посібник про помилки з paywall в iOS для новачків детально розбирає найпоширеніші пастки цього етапу, не лише технічне підключення.
Крок 4: протестуй покупку, відновлення та закінчення терміну
Цей етап найчастіше роблять абияк, хоча саме його Apple перевіряє найретельніше. Перед поданням мають працювати три сценарії:
Покупка. З тестовим обліковим записом sandbox покупка має одразу відкривати entitlement, а застосунок має реагувати на цю зміну без перезапуску.
Відновлення. На новому пристрої або після перевстановлення, з тим самим обліковим записом Apple, кнопка "Відновити покупки" має знаходити активну підписку. Apple завжди перевіряє цей сценарій під час review, і його відсутність чи некоректна робота є частою причиною відхилення за guideline 3.1.1.
Закінчення терміну. У середовищі sandbox підписки спливають за кілька хвилин замість кількох місяців, тож ти можеш перевірити, що доступ правильно закривається після завершення періоду, не чекаючи справжнього циклу оплати.
Чого RevenueCat не замінює
RevenueCat відповідає за механіку покупки, а не за відповідність твоєї сторінки в App Store чи paywall вимогам guideline 3.1.2. Тобі й далі треба правильно описати підписку в описі App Store, вказати її точну ціну й тривалість і додати умови використання. Сторінка підписка чи разова покупка в iOS допоможе вибрати правильну модель ще до цього технічного етапу.
Крім того, RevenueCat бере комісію з доходу понад певний місячний поріг, на додачу до комісії Apple за підписки, продані в застосунку. Перевір актуальні рівні на їхньому сайті, перш ніж будувати бізнес-модель з урахуванням цих двох комісій.
Найпоширеніші помилки новачків
Забути про стан завантаження. Під час запуску RevenueCat потрібна мить, щоб отримати права доступу користувача. Якщо застосунок за замовчуванням показує платний контент до цієї відповіді, користувач без підписки може на мить побачити те, за що не платив. Передбач явний стан завантаження замість оптимістичного показу за замовчуванням.
Перевіряти права не там, де треба. Активний entitlement треба перевіряти щоразу під час відкриття платного екрана, а не лише раз під час запуску. Якщо користувач скасує підписку або вона спливе, поки він користується застосунком, наступний екран має це відобразити.
Плутати sandbox і production. Ідентифікатори продуктів і тестові облікові записи sandbox відрізняються від production. Тест, що працює в sandbox із неправильним обліковим записом Apple, або продукт, створений лише в production, можуть створити хибне враження, що все готово.
Перевірений застосунок, а не просто застосунок, який компілюється
Підписка, яка "працює" у швидкому тесті на твоєму власному обліковому записі, не гарантує, що вона переживе відновлення на іншому пристрої чи справжнє закінчення терміну. Саме це перевіряє рецензент Apple. Сторінка підписка в iOS-застосунку детально описує весь цей ланцюжок, від створення продуктів до фінальної перевірки.
Якщо хочеш стартувати з основи, де paywall і підписки вже є в коді, саме це містить стартовий код iOS Kit. А щоб перевірити підписку так, як це зробить рецензент, Apple Review Kit містить мій чекліст перед поданням і нотатки, які варто залишити тестувальнику щодо вбудованої покупки.
Поширені запитання
Як налаштувати підписку RevenueCat в iOS?
За чотири кроки. Спершу створи продукти в App Store Connect. Потім підключи RevenueCat за допомогою ключа API App Store Connect і визнач entitlements (права доступу), після чого збудуй paywall. Наостанок протестуй покупку, відновлення й закінчення терміну: цей етап часто роблять абияк, хоча Apple його перевіряє.
Чи обов'язково використовувати RevenueCat, щоб продавати підписку в iOS?
Ні. StoreKit, фреймворк Apple, дає змогу продавати підписку без стороннього сервісу. Але тоді ти сам пишеш усю логіку покупки, відновлення й перевірки прав доступу, з граничними випадками, про які легко забути: зміна пристрою, закінчення терміну, повернення коштів. RevenueCat стоїть між App Store Connect і застосунком, щоб позбавити тебе цього шару.
Що таке entitlement у RevenueCat?
Entitlement це право доступу: воно означає те, що відкриває підписка, наприклад повний доступ до застосунку, незалежно від того, який саме продукт його активував. Якщо пізніше ти додаси річний рівень, просто прив'яжи новий продукт до того самого entitlement. Код, який перевіряє доступ у застосунку, змінювати не доведеться.
Як протестувати підписку RevenueCat перед поданням в Apple?
Перед поданням мають працювати три сценарії. Покупка: з тестовим обліковим записом sandbox доступ відкривається одразу, без перезапуску застосунку. Відновлення: на новому пристрої або після перевстановлення, з тим самим обліковим записом Apple, кнопка відновлення знаходить активну підписку. Закінчення терміну: у sandbox підписки спливають за кілька хвилин, тож можна перевірити, що доступ закривається.
Чому продукт, видимий у RevenueCat, невидимий для користувачів?
Часто тому, що продукт ніколи не входив у подання застосунку. Продукт, створений в App Store Connect, але так і не поданий на першу перевірку разом із пов'язаною версією, залишається невидимим для твоїх користувачів, навіть якщо RevenueCat його вже бачить. Це часта помилка на етапі створення продуктів.
Чи бере RevenueCat комісію з підписок?
RevenueCat бере комісію з доходу понад певний місячний поріг. Вона додається до комісії Apple за підписки, продані в застосунку. Перевір актуальні рівні на сайті RevenueCat, перш ніж будувати бізнес-модель з урахуванням цих двох комісій.