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: собери пейвол
Пейвол это экран, который показывает предложение и запускает покупку. RevenueCat предлагает пейволы, которые настраиваются из дашборда и меняются без перевыпуска приложения. Или можешь собрать свой через SDK, если хочешь полностью контролировать дизайн.
Место показа важно не меньше дизайна. Пейвол, который появляется до того, как человек увидел ценность приложения, обычно конвертирует хуже, чем пейвол сразу после первого успешного действия. В гайде про ошибки новичков с пейволом в iOS разобраны самые частые ловушки этого этапа, помимо чисто технического подключения.
Шаг 4: протестируй покупку, восстановление и истечение
Этот этап чаще всего делают на скорую руку, хотя Apple проверяет его больше всего. До отправки должны работать три сценария:
Покупка. С тестовым sandbox-аккаунтом покупка должна сразу открывать entitlement, а приложение должно реагировать на это изменение без перезапуска.
Восстановление. На новом устройстве или после переустановки, с тем же Apple-аккаунтом, кнопка "Восстановить покупки" должна находить активную подписку. Apple на ревью проверяет этот сценарий всегда, и если кнопки нет или она плохо работает, это частая причина отказа по guideline 3.1.1.
Истечение. В sandbox подписки истекают за несколько минут, а не за несколько месяцев. Так ты можешь проверить, что доступ корректно закрывается после окончания периода, не дожидаясь реального цикла оплаты.
Что RevenueCat не заменяет
RevenueCat отвечает за механику покупки, а не за соответствие твоей страницы и пейвола guideline 3.1.2. Тебе всё равно нужно правильно описать подписку в описании в App Store, указать её точную цену и длительность и добавить условия использования. Страница подписка или разовая покупка в iOS поможет выбрать правильную модель ещё до этого технического этапа.
Кроме того, RevenueCat берёт комиссию с дохода выше определённого месячного порога, в дополнение к комиссии Apple с подписок, проданных в приложении. Проверь актуальные тарифы на их сайте, прежде чем строить экономику вокруг этих двух комиссий.
Самые частые ошибки новичков
Забыть про состояние загрузки. При запуске RevenueCat нужно немного времени, чтобы получить права доступа пользователя. Если приложение по умолчанию показывает платный контент до этого ответа, пользователь без подписки может на мгновение увидеть то, за что не платил. Сделай явное состояние загрузки вместо оптимистичного показа по умолчанию.
Проверять права не там. Активный entitlement надо перепроверять при каждом открытии платного экрана, а не один раз при старте. Если пользователь отменил подписку или она истекла, пока он в приложении, следующий экран должен это учесть.
Путать sandbox и продакшн. Идентификаторы продуктов и тестовые sandbox-аккаунты отделены от продакшна. Тест, который работает в sandbox с не тем Apple-аккаунтом, или продукт, созданный только в продакшне, могут создать ложное ощущение, что всё готово.
Проверенное приложение, а не просто приложение, которое собирается
Подписка, которая "работает" в быстром тесте на твоём аккаунте, не гарантирует, что она переживёт восстановление на другом устройстве или реальное истечение. Именно это и проверяет ревьюер Apple. На странице подписка в iOS-приложении разобрана вся эта цепочка, от создания продуктов до финальной проверки.
Если хочешь начать с базы, где пейвол и подписки уже есть в коде, это и есть стартовый код в iOS Kit. А чтобы проверить подписку так, как это сделает ревьюер, в Apple Review Kit собраны мой чек-лист перед отправкой и заметки для тестировщика по встроенным покупкам.
Частые вопросы
Как подключить подписку через RevenueCat в iOS?
В четыре шага. Сначала создай продукты в App Store Connect. Затем подключи RevenueCat с API-ключом App Store Connect и задай entitlements (права доступа), потом собери пейвол. В конце протестируй покупку, восстановление и истечение: этот этап часто делают наспех, хотя 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, прежде чем строить экономику вокруг этих двух комиссий.