718 lines
44 KiB
Markdown
718 lines
44 KiB
Markdown
# Монетизация AI-приложения рефлексии: RevenueCat + Стратегия подписок
|
||
|
||
> **Контекст:** AI-приложение рефлексии, iOS SwiftUI + Android через Skip.tools. Соло инди-разработчик, Бишкек.
|
||
> **Планируемые планы:** Бесплатный триал / Monthly $9.99 / Annual $59.99 / Unlimited $19.99/mo
|
||
> **Дата исследования:** Май 2026
|
||
|
||
---
|
||
|
||
## 1. RevenueCat: Детальный разбор
|
||
|
||
### 1.1 Что такое RevenueCat
|
||
|
||
RevenueCat — это платформа управления подписками, которая предоставляет бэкенд-обёртку над StoreKit (iOS) и Google Play Billing (Android). Ключевая ценность: единый источник правды по подпискам вместо самостоятельного обслуживания двух разных платёжных систем.
|
||
|
||
**Полный список функций:**
|
||
|
||
| Категория | Функциональность |
|
||
|---|---|
|
||
| **Build** | Open-source SDK для iOS, Android, Flutter, React Native, Unity, macOS/Catalyst, Cordova, Ionic; Unified subscription backend; REST API; StoreKit 2 / Play Billing 5 поддержка |
|
||
| **Acquire** | Интеграции с MMP (AppsFlyer, Adjust, Branch, Facebook Ads, Apple Search Ads); Predictive LTV cohort analysis; No-code Web-to-App Funnels |
|
||
| **Convert** | A/B тестирование с remote config; No-code paywall editor с шаблонами; Segmentation (audience + in-app placement targeting) |
|
||
| **Understand** | Dashboard с 40+ метриками; Webhooks real-time; Automated data delivery (S3, BigQuery); интеграция с Amplitude, Mixpanel, Firebase, Segment и другими (27 интеграций всего) |
|
||
| **Retain** | Automated in-app subscription support; Cross-platform customer insights; Grant promotional subscriptions из дашборда; Event-based lifecycle triggers через маркетинговые интеграции |
|
||
| **Validation** | Server-side receipt validation для iOS и Android; защита от мошенничества |
|
||
|
||
### 1.2 Ценообразование RevenueCat: точные условия
|
||
|
||
| Тариф | Цена | Лимит |
|
||
|---|---|---|
|
||
| **Pro (Free tier)** | **$0** | До **$2,500/month MTR** (Monthly Tracked Revenue) |
|
||
| **Pro (платный)** | **1% от MTR** | Свыше $2,500 MTR |
|
||
| **Growth Tools Only** | 1% только на конверсии | Только Paywalls + Funnels на своей инфраструктуре |
|
||
| **Enterprise** | Custom | Высокий объём, кастомные SLA |
|
||
|
||
**Важные детали:**
|
||
- **MTR = gross revenue до вычета комиссии платформы** (т.е. $2,500 MTR ≠ $2,500 у вас в кармане; реально на счёт придёт ~$1,750 после комиссии 30%)
|
||
- **Кредитная карта не нужна** для старта
|
||
- **Все функции доступны на бесплатном тарифе** — нет ограничений по фичам, только по объёму
|
||
- Для соло инди-разработчика с нуля — **полностью бесплатно до ~175 активных подписчиков** ($9.99/mo × 250 ≈ $2,500)
|
||
|
||
**Когда начнёте платить:** При $9.99/mo плане, переход на платный тариф произойдёт примерно при 250 платящих пользователях (≈$2,500 MRR). RevenueCat будет брать 1%, то есть при $5,000 MRR → $50/месяц. Это разумно.
|
||
|
||
### 1.3 Интеграция в SwiftUI проект: сложность и время
|
||
|
||
**Установка через SPM (рекомендуемый путь):**
|
||
|
||
```swift
|
||
// Package.swift или Xcode → Add Package Dependencies
|
||
// URL: https://github.com/RevenueCat/purchases-ios-spm.git
|
||
// Версия: 5.0.0 < 6.0.0
|
||
|
||
import RevenueCat
|
||
|
||
// Инициализация один раз при запуске
|
||
Purchases.logLevel = .debug
|
||
Purchases.configure(withAPIKey: "appl_YOUR_KEY", appUserID: currentUserID)
|
||
```
|
||
|
||
**Проверка статуса подписки:**
|
||
```swift
|
||
let customerInfo = try await Purchases.shared.customerInfo()
|
||
if customerInfo.entitlements.all["pro"]?.isActive == true {
|
||
// Пользователь Premium
|
||
}
|
||
```
|
||
|
||
**Оценка времени для опытного iOS-разработчика:**
|
||
- Базовая интеграция (SDK + проверка статуса + paywall) — **4–8 часов**
|
||
- Полная интеграция с A/B тестами, аналитикой, webhooks — **1–3 дня**
|
||
- Настройка App Store Connect (продукты, группы подписок) — **2–4 часа**
|
||
|
||
### 1.4 RevenueCat + Skip.tools: Полная поддержка!
|
||
|
||
**Отличная новость:** Skip.tools имеет официальный модуль `skip-revenue` — это нативная обёртка для RevenueCat, работающая на обеих платформах из единого Swift-кода.
|
||
|
||
```swift
|
||
// Package.swift
|
||
.package(url: "https://source.skip.dev/skip-revenue.git", "0.0.0"..<"2.0.0")
|
||
|
||
// Инициализация с платформенными ключами
|
||
import SkipRevenue
|
||
|
||
@main struct MyApp: App {
|
||
init() {
|
||
#if !SKIP
|
||
RevenueCatFuse.shared.configure(apiKey: "appl_ios_key")
|
||
#else
|
||
RevenueCatFuse.shared.configure(apiKey: "goog_android_key")
|
||
#endif
|
||
}
|
||
}
|
||
```
|
||
|
||
**Функции skip-revenue:**
|
||
- `loadProducts()` / `loadOfferings()` — загрузка продуктов
|
||
- `purchase(package:)` — покупка (iOS: без доп. параметров; Android: требует `activity`)
|
||
- `getCustomerInfo()` — статус подписки
|
||
- `restorePurchases()` — восстановление покупок
|
||
- `RCFusePaywallView` — готовый нативный paywall UI на обеих платформах
|
||
|
||
**⚠️ Важный нюанс для Android (через Skip):**
|
||
```swift
|
||
// Android требует передачи Activity
|
||
let customerInfo = try await RevenueCatFuse.shared.purchase(
|
||
package: package,
|
||
activity: UIApplication.shared.androidActivity
|
||
)
|
||
```
|
||
|
||
Это единственное отличие от iOS-кода. Всё остальное идентично.
|
||
|
||
### 1.5 Отзывы инди-разработчиков о RevenueCat
|
||
|
||
**Из Reddit r/androiddev (реальные комментарии):**
|
||
|
||
✅ **Плюсы:**
|
||
- "Easy to set up, works well long-term" — стабильная работа
|
||
- User retention dashboards без необходимости настраивать BigQuery
|
||
- A/B testing paywalls из коробки
|
||
- Responsive support в GitHub issues
|
||
- "That sort of support is worth so much more to me than the bare implementation!"
|
||
- Цитата из маркетинга RevenueCat (но показательная): "In just a year from shipping with RevenueCat, I was able to quit my day job to focus 100% on CardPointers."
|
||
|
||
❌ **Минусы:**
|
||
- API latency: p90 ~800ms для запросов из EU-серверов (важно для UX)
|
||
- Абстракция Products/Offerings/Entitlements — требует понимания, не очевидна новичкам
|
||
- При высоких доходах 1% становится значительной суммой
|
||
- Paywall шаблоны ограничены (но fully custom paywall возможен)
|
||
|
||
**Рейтинги:**
|
||
- Capterra: **4.8/5**
|
||
- G2: **4.7/5**
|
||
- SOC2 certified, GDPR compliant
|
||
|
||
### 1.6 Конкуренты: Adapty, Qonversion, Superwall
|
||
|
||
| Критерий | **RevenueCat** | **Adapty** | **Qonversion** | **Superwall** |
|
||
|---|---|---|---|---|
|
||
| **Free tier** | $0 до $2,500 MTR | $0 до $10K MTR | ✅ (ограниченный) | — |
|
||
| **Платный тариф** | 1% от MTR | $99/mo (flat) | ~$20/mo | $99/mo |
|
||
| **SDK платформы** | 8 платформ | 5 платформ | iOS + Android | iOS + Android |
|
||
| **Skip.tools support** | ✅ Официальный пакет | ❌ | ❌ | ❌ |
|
||
| **Интеграции** | 27 | 17 | ~10 | ~15 |
|
||
| **No-code Paywall Builder** | ✅ (2024 добавлен) | ✅ | ❌ | ✅ (специализация) |
|
||
| **A/B Testing** | ✅ | ✅ | ❌ | ✅ |
|
||
| **Free CRM access** | ✅ | ❌ (только paid) | ❌ | — |
|
||
| **Free analytics** | Базовые 6 метрик | Более 10 метрик | Средние | — |
|
||
| **Локализация paywalls бесплатно** | ✅ | ❌ (только paid) | — | — |
|
||
| **MMP/Attribution (бесплатно)** | ✅ | ❌ ($100+ plan) | ❌ | — |
|
||
|
||
**Вывод для нашего кейса:**
|
||
> **RevenueCat — однозначный выбор** для Skip.tools проекта. Единственный инструмент с официальной поддержкой Skip. Adapty дешевле до $10K MTR, но отсутствует поддержка Skip и локализация paywalls платная. Qonversion и Superwall не имеют Skip-интеграции.
|
||
|
||
---
|
||
|
||
## 2. Данные о конверсии: RevenueCat State of Subscription Apps 2024
|
||
|
||
> Источник: RevenueCat, анализ 30,000+ приложений, 18,000+ разработчиков, $6.7B+ отслеживаемого дохода, 290M+ подписчиков
|
||
|
||
### 2.1 Ключевые бенчмарки конверсии
|
||
|
||
| Метрика | Значение |
|
||
|---|---|
|
||
| Downloads → платящий подписчик (первые 30 дней) | **1.7%** (среднее) |
|
||
| Нижний квартиль | 0.6% |
|
||
| Верхний квартиль | 4.2% |
|
||
| Trial → конверсия (2024) | **37.3%** (снизилась с 40.5% в 2023) |
|
||
| Trial → конверсия (Health & Fitness) | **44.5%** |
|
||
| Trial → конверсия, триал ≤4 дня | 31.2% |
|
||
| Trial → конверсия, длинный триал | до 44.9% |
|
||
| App Store vs Google Play конверсия | 39.0% vs 28.5% |
|
||
| Разница top 5% vs bottom 25% (за 12 месяцев) | **200x** |
|
||
| Churned пользователи, возвращающиеся за 12 мес | >10% |
|
||
|
||
### 2.2 Pricing benchmarks (релевантные для нашего приложения)
|
||
|
||
| Категория | Данные |
|
||
|---|---|
|
||
| Самая распространённая цена (месячная) | **$9.99/mo** ✅ — попадаем точно в рынок |
|
||
| Средняя месячная цена (2024) | $8.01 (рост +14% с $7.05) |
|
||
| Самая распространённая цена (годовая, Education) | **$59.99/year** ✅ — наш план попадает точно |
|
||
| Рекомендуемый дисконт Annual vs Monthly (аннуализированный) | **~17%** (наш: $59.99 vs $9.99×12=$119.88 → скидка 50% — агрессивно, но работает) |
|
||
| Health & Fitness предпочитают | **1-year планы** (долгосрочные цели) |
|
||
|
||
### 2.3 Стратегия триала: данные 2024
|
||
|
||
| Стратегия | 2024 | 2023 |
|
||
|---|---|---|
|
||
| Иногда предлагают триал | 47.84% | — |
|
||
| Никогда не предлагают | 28.81% | ~40% |
|
||
| Всегда предлагают | 23.34% | ~30%+ |
|
||
|
||
**Тренды:**
|
||
- Самый популярный период триала: **5–9 дней**
|
||
- Рост 17–32 дневных триалов на 50% (тренд к более длинным)
|
||
- **Большинство триалов стартуют в первые 24 часа** после установки (85%+ в Business, Health)
|
||
- Эксперт Hannah Parvaz: "Short trials are the equivalent of a speed date: brief yet intense"
|
||
|
||
### 2.4 Модели монетизации: Calm, Headspace, Duolingo
|
||
|
||
| Приложение | Модель | Ключевые решения |
|
||
|---|---|---|
|
||
| **Calm** | Hard paywall после онбординга + 7-day trial | Нет бесплатного контента; paywall сразу после регистрации; упор на "sleep" как крючок |
|
||
| **Headspace** | Freemium + подписка | Базовые медитации бесплатно; всё остальное — платно; Annual план с большой скидкой |
|
||
| **Duolingo** | Freemium + рекламный tier + Super Duolingo | Сильный gamification; ads создают motivation to upgrade; агрессивные уведомления |
|
||
|
||
**Вывод по индустрии:**
|
||
- Health & Fitness / Mental Health имеют **44.5% trial conversion** — лучший показатель после Travel
|
||
- Hard paywall (Calm) показывает хорошие результаты для brand-aware приложений
|
||
- Soft paywall (Headspace) работает для discovery через контент
|
||
|
||
### 2.5 Сравнение моделей для нашего приложения
|
||
|
||
| Модель | Конверсия (оценка) | Pros | Cons |
|
||
|---|---|---|---|
|
||
| **1 сессия бесплатно, потом prompt** | 3–5% платных | Нет барьера входа; пользователь видит ценность | Сложнее предсказать MRR |
|
||
| **14-day trial с картой** | 30–40% из начавших триал | Высокая конверсия завершивших | Меньше людей начнут триал (барьер карты) |
|
||
| **7-day trial без карты** | 5–15% из скачавших | Оптимальный баланс | Люди забывают подписаться |
|
||
| **Freemium с N сессиями в месяц** | 2–8% платных | Постоянная аудитория; вирусность | Сложность удержания платящих |
|
||
|
||
**Рекомендация для Mental Health / Reflection приложения:**
|
||
> Оптимальна модель **"7-day free trial без карты + soft paywall после первой сессии"** (показать paywall, но дать продолжить). После триала — hard paywall.
|
||
|
||
---
|
||
|
||
## 3. Правила Apple и Google
|
||
|
||
### 3.1 Apple: Free trial и сессии без карты
|
||
|
||
**Можно ли давать первую сессию бесплатно без карты?**
|
||
> ✅ **ДА — это полностью разрешено и поощряется.**
|
||
|
||
Apple позволяет предоставлять любой бесплатный контент без привязки карты. "1 бесплатная сессия" — это просто бесплатная функция приложения, не требующая IAP. Карта нужна только при оформлении подписки или триала.
|
||
|
||
**Типы offer Apple IAP:**
|
||
- **Introductory Offers** — бесплатный/сниженный триал для новых подписчиков
|
||
- **Offer Codes** — коды для маркетинговых акций
|
||
- **Promotional Offers** — специальные предложения для бывших/текущих подписчиков
|
||
|
||
**App Store Review Guidelines (раздел 3.1.1 — IAP):**
|
||
- Все функции, требующие разблокировки за деньги, **обязаны** использовать IAP Apple
|
||
- Нельзя ссылаться на другие методы оплаты внутри приложения (нарушение)
|
||
- "Free" приложения не могут требовать покупку до использования (но можно после первой сессии)
|
||
- Metadata должна чётко описывать, что нужна подписка
|
||
- Демо-аккаунт для ревьюеров обязателен если paywall блокирует функциональность
|
||
|
||
### 3.2 Apple Small Business Program: 15% комиссия
|
||
|
||
| Параметр | Условие |
|
||
|---|---|
|
||
| **Стандартная комиссия** | 30% |
|
||
| **Уменьшенная комиссия** | **15%** |
|
||
| **Порог дохода** | ≤ $1,000,000 USD proceeds в предыдущем календарном году |
|
||
| **Applies to** | Ты + ВСЕ связанные аккаунты разработчика суммарно |
|
||
| **Enrollement** | Нужно подать заявку; одобрение ~15 дней после конца фискального месяца |
|
||
| **Подходит ли соло-инди из KG?** | ✅ **Да, абсолютно** — нет ограничений по географии |
|
||
| **Subscriptions (2+ year)** | После 1-го года подписки Apple снижает до 15% автоматически |
|
||
|
||
**Как записаться:** App Store Connect → Account Holder → Small Business Program → Enroll
|
||
|
||
**Для нашего случая:** Сразу при запуске подаём заявку. До $1M proceed в год — это примерно 8,300 платящих пользователей при $9.99/mo × 12. Очень реально оставаться на 15% долго.
|
||
|
||
### 3.3 Google Play: аналогичные условия
|
||
|
||
| Параметр | Условие |
|
||
|---|---|
|
||
| **Стандартная комиссия** | 30% |
|
||
| **Подписки** | **15% всегда** (без лимита по доходу!) |
|
||
| **Первый $1M/год (не подписки)** | 15% |
|
||
| **Свыше $1M/год** | 30% |
|
||
| **97% разработчиков** | Платят 0% (бесплатное распространение) |
|
||
| **99% разработчиков с транзакциями** | Платят 15% или меньше |
|
||
|
||
**Ключевое отличие Google:** Для подписок Google уже автоматически берёт **15%** (не нужна отдельная программа как у Apple). Это выгоднее.
|
||
|
||
**Итоговые комиссии для нашего приложения:**
|
||
- Apple (после Small Business Program): **15%** → с $9.99 получаем $8.49
|
||
- Google Play (подписки): **15%** → с $9.99 получаем $8.49
|
||
- После вычета RevenueCat 1%: ~$8.41
|
||
|
||
### 3.4 Типичные ошибки при первой настройке IAP
|
||
|
||
1. **Не подписано Paid Apps Agreement** в App Store Connect → IAP не работает
|
||
2. **Не настроены банковские реквизиты** → то же самое
|
||
3. **Продукт в статусе "Ready to Submit"** но не "Approved" → покупки не работают в production
|
||
4. **Не включена In-App Purchase capability** в Xcode (Capabilities tab)
|
||
5. **Hardcoded product IDs** → при смене плана нужен update приложения
|
||
6. **Sandbox account не создан** в App Store Connect → тестирование невозможно
|
||
7. **Не вызван `transaction.finish()`** → транзакции висят бесконечно
|
||
8. **Metadata не описывает подписку** → reject от App Review (обязательно 2.3.2)
|
||
9. **Отсутствует восстановление покупок** → обязательное требование Apple
|
||
|
||
---
|
||
|
||
## 4. Психология ценообразования для Mental Health
|
||
|
||
### 4.1 Где показывать paywall
|
||
|
||
**Данные и рекомендации:**
|
||
|
||
| Момент показа | Конверсия (оценка) | Обоснование |
|
||
|---|---|---|
|
||
| Сразу при открытии (до онбординга) | ~1-2% | Слишком рано; пользователь не видел ценности |
|
||
| После онбординга (перед первой сессией) | ~3-5% | Вариант Calm; работает при сильном бренде |
|
||
| **После первой сессии** | **~5-10%** | ✅ Оптимально для рефлексии — пользователь понял ценность |
|
||
| После 3+ сессий / 3+ дней | ~3-6% | Пользователь "тёплый", но часть уже ушла |
|
||
| При достижении лимита (freemium) | ~4-8% | Естественный триггер; friction высокий |
|
||
|
||
**Рекомендация:**
|
||
> Показывай paywall **после первой завершённой сессии**. Момент завершения сессии — пик эмоциональной ценности: пользователь только что получил инсайт и готов инвестировать в продолжение.
|
||
|
||
### 4.2 Soft vs Hard paywall
|
||
|
||
| Тип | Описание | Конверсия | Retention |
|
||
|---|---|---|---|
|
||
| **Hard paywall** | Полная блокировка; нужна подписка | Выше среди прошедших | Ниже органический рост |
|
||
| **Soft paywall** | Можно пропустить; часть функций доступна | Ниже одномоментная | Выше долгосрочная |
|
||
| **Soft → Hard** (после триала) | Триал без карты, затем блокировка | **Оптимально** | Лучший баланс |
|
||
|
||
**Для mental health / reflection приложений:**
|
||
- Soft paywall с триалом даёт больше шансов доказать ценность
|
||
- Пользователи не доверяют психологическим инструментам без опыта
|
||
- Рекомендую: **мягкий paywall с 7-дневным триалом** → hard блокировка после триала
|
||
|
||
### 4.3 Framing: как формулировать ограничения
|
||
|
||
| Формулировка | Эффект |
|
||
|---|---|
|
||
| "2 сессии в неделю" | Кажется щедро; создаёт ритм |
|
||
| "8 сессий в месяц" | Кажется меньше; абстрактно |
|
||
| "Попробуй 7 дней бесплатно" | Позитивный framing; снижает страх |
|
||
| "Осталось 2 бесплатных сессии" | Loss aversion; хорошо конвертирует |
|
||
| "Продолжи свой путь рефлексии" | Emotional hook; лучше для mental health |
|
||
|
||
**Рекомендация по framing:**
|
||
- Используй **"неделю"** как единицу ("2 сессии в неделю"), не месяц
|
||
- Показывай **прогресс** — "ты уже сделал X шагов" до paywall
|
||
- Формулируй как **"продолжение"**, не как "покупку"
|
||
|
||
### 4.4 Annual plan: когда и как предлагать
|
||
|
||
**Рекомендации из данных RevenueCat 2024:**
|
||
- Health & Fitness аудитория **сильно предпочитает годовые планы** (долгосрочные цели)
|
||
- Эксперт Reid DeRamus (ex-Hulu): "Avoid lifetime plans — severely under-monetize most loyal users"
|
||
- Стандартный дисконт: 17% от аннуализированной месячной цены; наш: 50% скидка — агрессивно, но привычно для рынка
|
||
|
||
**Когда предлагать Annual:**
|
||
1. На paywall экране: **выделить Annual как "Most Popular"** или "Best Value"
|
||
2. После 2–3 недель месячной подписки: **upgrade prompt**
|
||
3. При ежегодном продлении: предложить скидку если хотели отменить
|
||
|
||
**Психология Annual:**
|
||
- "$59.99/year" воспринимается как "меньше $5/month" — используй это в copy
|
||
- Сравни с "двумя чашками кофе в месяц" для mental health аудитории
|
||
|
||
### 4.5 Примеры удачных paywall экранов (паттерны)
|
||
|
||
**Структура конвертирующего paywall для mental health:**
|
||
|
||
```
|
||
[Эмоциональный заголовок]
|
||
"Продолжи свой путь к ясности"
|
||
|
||
[Список 3-4 бенефита с иконками]
|
||
✓ Неограниченные сессии рефлексии
|
||
✓ AI-анализ паттернов мышления
|
||
✓ История и инсайты
|
||
✓ Экспорт данных
|
||
|
||
[Планы — Annual highlighted]
|
||
┌─────────────────────────────────┐
|
||
│ ⭐ ГОДОВОЙ $59.99/год │
|
||
│ Экономия 50% · $4.99/месяц │
|
||
└─────────────────────────────────┘
|
||
МЕСЯЧНЫЙ $9.99/месяц
|
||
|
||
[CTA Button]
|
||
"Начать 7 дней бесплатно"
|
||
|
||
[Legal]
|
||
Отмена в любое время · Без обязательств
|
||
```
|
||
|
||
**Ключевые принципы:**
|
||
- Annual план — **всегда первый и выделенный**
|
||
- Кнопка CTA фокусируется на триале, не на цене
|
||
- Минимум юридического текста сверху, максимум — мелко снизу
|
||
- Social proof если есть: "Помог 10,000 пользователям"
|
||
|
||
---
|
||
|
||
## 5. Пошаговый план реализации
|
||
|
||
### Шаг 0: Подготовка App Store Connect (до RevenueCat)
|
||
|
||
```
|
||
□ 1. Подписать Paid Apps Agreement (Schedule 2) в App Store Connect
|
||
□ 2. Добавить банковские реквизиты (можно Payoneer / карта KG-банка)
|
||
□ 3. Создать Subscription Group: "Psychologist Pro"
|
||
□ 4. Создать продукты:
|
||
- com.yourapp.monthly_999 ($9.99/mo, 1 month)
|
||
- com.yourapp.annual_5999 ($59.99/yr, 1 year)
|
||
- com.yourapp.unlimited_1999 ($19.99/mo, 1 month — "Unlimited")
|
||
□ 5. Для каждого продукта: добавить локализацию (EN обязательна)
|
||
□ 6. Настроить Free Trial: 7 days для каждого плана
|
||
□ 7. Добавить скриншот и описание для App Review
|
||
□ 8. Создать Sandbox тестовый аккаунт (Users and Access → Sandbox Testers)
|
||
□ 9. Подать заявку на Small Business Program (15% комиссия)
|
||
```
|
||
|
||
### Шаг 1: Настройка RevenueCat
|
||
|
||
```
|
||
□ 1. Зарегистрироваться на revenuecat.com (бесплатно, без карты)
|
||
□ 2. Создать проект "Psychologist App"
|
||
□ 3. Добавить iOS App: вставить Bundle ID, Apple API Key (из App Store Connect)
|
||
□ 4. Добавить Android App: Bundle ID, Google Service Account JSON
|
||
□ 5. В RevenueCat Dashboard → Products: добавить те же Product IDs
|
||
□ 6. Создать Entitlement "pro"
|
||
□ 7. Привязать все продукты к entitlement "pro"
|
||
□ 8. Создать Offering "default" с пакетами monthly, annual, unlimited
|
||
□ 9. Настроить webhooks (опционально: Slack уведомления о подписках)
|
||
```
|
||
|
||
### Шаг 2: Интеграция в Skip.tools проект
|
||
|
||
```swift
|
||
// Package.swift — добавить зависимость
|
||
.package(url: "https://source.skip.dev/skip-revenue.git", "0.0.0"..<"2.0.0")
|
||
|
||
// App.swift — инициализация
|
||
import SkipRevenue
|
||
|
||
@main struct PsychologistApp: App {
|
||
init() {
|
||
#if !SKIP
|
||
RevenueCatFuse.shared.configure(apiKey: "appl_XXXXXXXX")
|
||
#else
|
||
RevenueCatFuse.shared.configure(apiKey: "goog_XXXXXXXX")
|
||
#endif
|
||
}
|
||
}
|
||
|
||
// SubscriptionManager.swift — сервис подписок
|
||
@MainActor
|
||
class SubscriptionManager: ObservableObject {
|
||
@Published var isPro: Bool = false
|
||
|
||
func checkStatus() async {
|
||
let info = try? await RevenueCatFuse.shared.getCustomerInfo()
|
||
isPro = info?.isEntitlementActive("pro") ?? false
|
||
}
|
||
|
||
func loadOfferings() async throws -> [RCFusePackage] {
|
||
return try await RevenueCatFuse.shared.loadProducts()
|
||
}
|
||
}
|
||
|
||
// PaywallView.swift — использование готового UI
|
||
import SkipRevenueUI
|
||
|
||
.sheet(isPresented: $showPaywall) {
|
||
RCFusePaywallView(
|
||
onPurchaseCompleted: { _ in showPaywall = false },
|
||
onRestoreCompleted: { _ in showPaywall = false },
|
||
onDismiss: { showPaywall = false }
|
||
)
|
||
}
|
||
```
|
||
|
||
### Шаг 3: Тестирование в Sandbox
|
||
|
||
```
|
||
□ 1. В Xcode: настроить StoreKit Configuration File (File → New → StoreKit Config)
|
||
□ 2. Edit Scheme → Run → Options → StoreKit Configuration: выбрать файл
|
||
□ 3. Войти в Simulator под Sandbox тестовым аккаунтом (Settings → App Store)
|
||
□ 4. Тестировать сценарии:
|
||
- Успешная покупка подписки
|
||
- Отмена подписки
|
||
- Восстановление покупок
|
||
- Истечение триала (ускоренное время в Sandbox: 1 day = 5 min)
|
||
- Billing issue (decline карты)
|
||
□ 5. Проверять события в RevenueCat Dashboard → Customer Lookup
|
||
```
|
||
|
||
### Шаг 4: Запуск и мониторинг
|
||
|
||
```
|
||
□ 1. Настроить Webhook → Slack канал для real-time уведомлений
|
||
□ 2. Подключить Firebase Analytics для funnel отслеживания
|
||
□ 3. Настроить A/B тест paywall (RevenueCat Experiments):
|
||
- Вариант A: paywall после онбординга
|
||
- Вариант B: paywall после первой сессии
|
||
□ 4. Мониторить метрики:
|
||
- Trial start rate (цель: >5%)
|
||
- Trial conversion rate (цель: >35%)
|
||
- Monthly churn (цель: <10%)
|
||
- MRR growth
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Рекомендованная модель монетизации
|
||
|
||
### Финальная рекомендация
|
||
|
||
**Выбранная модель: "Soft Paywall → Free Trial → Hard Paywall"**
|
||
|
||
```
|
||
Первый запуск
|
||
↓
|
||
Онбординг (5 экранов, без paywall)
|
||
↓
|
||
Первая ПОЛНАЯ бесплатная сессия
|
||
↓
|
||
[После сессии — Paywall экран]
|
||
"Понравилось? Продолжи своё путешествие"
|
||
→ "Начать 7 дней бесплатно" [CTA]
|
||
→ "Пропустить" [маленькая ссылка]
|
||
↓ (если пропустил)
|
||
2-я сессия → HARD paywall (нет пропуска)
|
||
```
|
||
|
||
**Структура планов (финальная):**
|
||
|
||
| План | Цена | Позиционирование |
|
||
|---|---|---|
|
||
| **Annual** | $59.99/год ($4.99/mo) | ⭐ "Best Value" — выделен первым |
|
||
| **Monthly** | $9.99/mo | Стандартный план |
|
||
| **Unlimited** | $19.99/mo | Для power users (больше сессий в день, приоритет) |
|
||
|
||
**Триал:** 7 дней бесплатно (без карты) для Monthly и Annual. Unlimited — без триала или 3 дня.
|
||
|
||
### Почему именно эта модель
|
||
|
||
1. **1 сессия бесплатно** — пользователь видит ценность ДО оплаты (критично для trust в mental health)
|
||
2. **7-day trial без карты** — снижает барьер; Health & Fitness конвертирует 44.5% из начавших триал
|
||
3. **Annual как основной** — Health & Fitness аудитория предпочитает годовые планы (долгосрочные цели)
|
||
4. **$59.99/year** — точно попадает в самый распространённый ценовой tier (Education/Health data 2024)
|
||
5. **Soft → Hard** — адаптируется к уровню доверия пользователя
|
||
|
||
### Ожидаемые метрики (консервативный прогноз)
|
||
|
||
| Метрика | Значение |
|
||
|---|---|
|
||
| Download → Trial start | 20–35% |
|
||
| Trial → Paid | 30–40% |
|
||
| Download → Paid (итого) | ~5–10% |
|
||
| Annual vs Monthly split | 60% / 40% (цель) |
|
||
| MRR при 1000 активных подписчиках | ~$6,000–8,000 |
|
||
| RevenueCat fee при $6,000 MRR | $60/mo (1%) |
|
||
| Apple/Google комиссия (15%) | ~$900/mo |
|
||
| Чистый MRR при $6K gross | ~$5,040/mo |
|
||
|
||
---
|
||
|
||
## Итоговые выводы
|
||
|
||
1. **RevenueCat** — единственный правильный выбор для Skip.tools проекта благодаря официальному пакету `skip-revenue`. Бесплатно до $2,500 MRR (≈250 платящих пользователей).
|
||
|
||
2. **Skip.tools + RevenueCat** работает нативно через единый Swift-код с минимальными платформенными различиями (только передача `activity` для Android-покупок).
|
||
|
||
3. **Apple Small Business Program** (15% вместо 30%) доступен сразу для соло-разработчика из Кыргызстана. Подать заявку в первый же день запуска.
|
||
|
||
4. **Google Play** автоматически берёт 15% на подписки — программа не нужна.
|
||
|
||
5. **7-day free trial + 1 бесплатная сессия** — оптимальная комбинация для mental health приложения. Trial start rate 20–35%, конверсия trial→paid до 44.5% в категории Health & Fitness.
|
||
|
||
6. **Annual план выделить первым** — Health & Fitness аудитория предпочитает долгосрочные планы, конверсия выше.
|
||
|
||
7. **Paywall после первой сессии** — оптимальный момент. Эмоциональный пик после инсайта = максимальная готовность платить.
|
||
|
||
8. **Время интеграции** RevenueCat + Skip: 1–2 дня для базовой интеграции + 2–4 часа на App Store Connect настройку.
|
||
|
||
---
|
||
|
||
## 7. Российский рынок: подписки в условиях санкций (май 2026)
|
||
|
||
> **TL;DR:** App Store платежи в РФ полностью отключены с 1 апреля 2026. RevenueCat не поддерживает RuStore. Для России нужен отдельный платёжный стек. Единого SDK нет — нужна абстракция.
|
||
|
||
### 7.1 Текущий статус платёжных каналов
|
||
|
||
| Канал | Статус | Комментарий |
|
||
|---|---|---|
|
||
| **App Store (iOS)** | 🔴 **МЁРТВ** с 01.04.2026 | Apple Ireland оштрафована за нарушение санкций → отключила все платежи в РФ. Работает только существующий баланс Apple Account |
|
||
| **Google Play (Android)** | 🟡 Ограничен | Visa/Mastercard недоступны. МИР — частично. SBP — нет. Часть пользователей платит через операторские счета, но это «расходящийся» канал |
|
||
| **RuStore (Android)** | 🟢 **Основной канал** | Предустановлен на всех Android-устройствах в РФ с сентября 2025. Полная поддержка МИР, СБП, SberPay, карты из VK ID |
|
||
| **RuStore на iOS** | 🟠 Не существует | Только RuStore Bridge (требует Android-устройства рядом). Pay SDK для iOS был анонсирован дек. 2025 на «начало 2026» — статус запуска неясен |
|
||
| **Web-checkout iOS** | 🟡 Технически возможен | Внешний сайт + ЮКасса/Tinkoff/CloudPayments → пользователь получает токен доступа → вводит в приложении |
|
||
|
||
### 7.2 RevenueCat: поддержка России
|
||
|
||
**RevenueCat НЕ поддерживает RuStore.** RevenueCat оборачивает только:
|
||
- StoreKit / StoreKit 2 (Apple)
|
||
- Google Play Billing (Google)
|
||
|
||
RuStore использует собственный **Pay SDK** (и мигрирует с устаревшего BillingClient → обязательно до 1 августа 2026). Никакой официальной или сторонней обёртки RevenueCat для RuStore не существует.
|
||
|
||
**Следствие для skip-revenue:** `skip-revenue` тоже не покрывает RuStore — это обёртка над RevenueCat.
|
||
|
||
**Adapty** — та же ситуация: поддерживает App Store + Google Play, RuStore нет.
|
||
|
||
### 7.3 RuStore Pay SDK: ключевые детали
|
||
|
||
| Параметр | Значение |
|
||
|---|---|
|
||
| **Дедлайн миграции с BillingClient** | **1 августа 2026** — старый SDK перестаёт принимать платежи |
|
||
| **Платёжные методы** | МИР, СБП, SberPay, карты (T-Pay и мобильный счёт — в роадмапе) |
|
||
| **Авто-подгрузка карт** | Из VK ID — без ручного ввода → **+20% к конверсии** |
|
||
| **Поддержка подписок** | Полная: trial / promo / main / grace / hold периоды |
|
||
| **Sandbox** | Есть (в BillingClient не было) |
|
||
| **Комиссия** | Не публикуется явно; конкурентная с Google Play |
|
||
| **Фреймворки** | Kotlin/Java, React Native, Flutter, Unity, Godot, Unreal Engine, Defold |
|
||
| **Swift / iOS нативный SDK** | ❌ Отсутствует |
|
||
|
||
### 7.4 Архитектура для покрытия России
|
||
|
||
Единого SDK нет. Нужна абстракция на уровне приложения:
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ PaymentProvider (протокол) │
|
||
│ loadProducts() / purchase() / checkStatus() │
|
||
└──────────┬───────────────────────────┬──────────────┘
|
||
│ │
|
||
▼ ▼
|
||
RevenueCatProvider RuStoreProvider
|
||
(iOS App Store + (Android RuStore
|
||
Android Google Play) Pay SDK)
|
||
skip-revenue пакет Kotlin native
|
||
Глобальные рынки Только РФ Android
|
||
│ │
|
||
└──────────┬────────────────┘
|
||
▼
|
||
WebCheckoutProvider
|
||
(iOS РФ + fallback)
|
||
ЮКасса / Tinkoff /
|
||
CloudPayments
|
||
→ access token flow
|
||
```
|
||
|
||
**Практически это значит:**
|
||
|
||
- **Android**: 2 отдельных flavor — `googlePlay` (RevenueCat) и `ruStore` (Pay SDK). Или одна сборка с детектом магазина.
|
||
- **iOS глобальные**: RevenueCat + skip-revenue (как и планировалось).
|
||
- **iOS Россия**: Веб-чекаут — пользователь нажимает «Оформить подписку» → открывается Safari/SFSafariViewController → платёж через ЮКасса → сервер выдаёт токен → приложение активирует доступ. Apple разрешает это через External Purchase Link Entitlement (в РФ де-факто выдают для Reader App категории и ряда других).
|
||
|
||
### 7.5 Веб-чекаут для iOS России: как работает
|
||
|
||
```
|
||
iOS пользователь
|
||
↓
|
||
[Кнопка "Подписаться"]
|
||
↓
|
||
SFSafariViewController → ваш сайт (yourapp.com/subscribe)
|
||
↓
|
||
Выбор плана + ввод данных карты
|
||
↓
|
||
ЮКасса / CloudPayments / Tinkoff
|
||
(МИР, СБП, SberPay, карты)
|
||
↓
|
||
Успешный платёж → сервер создаёт subscription record
|
||
↓
|
||
Redirect с токеном → ваше приложение deeplink
|
||
↓
|
||
Приложение активирует доступ (по токену или user ID)
|
||
```
|
||
|
||
**Российские платёжные провайдеры для web-checkout:**
|
||
|
||
| Провайдер | Комиссия | Методы | Подписки |
|
||
|---|---|---|---|
|
||
| **ЮКасса (Сбербанк)** | 2.8–3.5% | МИР, СБП, SberPay, карты, кошельки | Рекуррентные + 54-ФЗ авто |
|
||
| **CloudPayments (Тинькофф)** | 2–3.9% | МИР, СБП, T-Pay, карты | Лучшая поддержка подписок по API |
|
||
| **Tinkoff Checkout** | 2.5–3% | МИР, T-Pay, карты | Есть, через API |
|
||
|
||
**CloudPayments** — оптимален для подписочной модели: гибкий API, удобное управление рекуррентными платежами, owned by Тинькофф → надёжность.
|
||
|
||
### 7.6 Стратегия: стоит ли вообще заниматься РФ?
|
||
|
||
**Аргументы за:**
|
||
- 144 млн человек; mental health ниша практически пустая в RuStore
|
||
- RuStore — конкурентное преимущество (большинство международных разработчиков игнорируют)
|
||
- Пользователи платят в рублях, конкуренция ниже → выше средний чек в соотношении
|
||
|
||
**Аргументы против:**
|
||
- iOS Russia = мёртв до изменения политики. Веб-чекаут — сложная инфраструктура для соло-разработчика
|
||
- RuStore Pay SDK требует отдельную Android-интеграцию без RevenueCat
|
||
- VK/RuStore — политически неоднозначная зависимость
|
||
- Юридическая сторона: приём платежей из РФ как резидент Кыргызстана — требует консультации
|
||
|
||
**Рекомендация для соло-разработчика на старте:**
|
||
|
||
> **Фаза 1 (MVP):** Запуск только на глобальных рынках через RevenueCat + App Store + Google Play. Россию пропустить.
|
||
>
|
||
> **Фаза 2 (после первой выручки):** Добавить RuStore Android через Pay SDK как отдельный flavor. Это даёт 100% Android-охват РФ.
|
||
>
|
||
> **Фаза 3 (если есть спрос):** Веб-чекаут для iOS-аудитории РФ через CloudPayments. Только если data показывает значимый трафик.
|
||
|
||
### 7.7 Если всё-таки делать RuStore: минимальный план
|
||
|
||
```
|
||
□ 1. Зарегистрировать юрлицо или ИП (RuStore требует юридическое лицо)
|
||
□ 2. Зарегистрироваться в RuStore Console (console.rustore.ru)
|
||
□ 3. Создать отдельный Android productFlavor: ruStore
|
||
□ 4. Подключить Pay SDK (не BillingClient — он умирает 01.08.2026)
|
||
□ 5. Создать продукты в RuStore Console (подписки)
|
||
□ 6. Реализовать RuStorePaymentProvider абстракцию
|
||
□ 7. Протестировать в Sandbox
|
||
□ 8. Публикация → отдельный APK для RuStore подписан тем же ключом
|
||
```
|
||
|
||
**Важно:** RuStore требует, чтобы подпись APK совпадала с подписью билда в Console. Нельзя использовать debug keystore.
|
||
|
||
---
|
||
|
||
*Документ обновлён май 2026. Источники: CNews, MacDailyNews, The Verge, RuStore Developer Docs, ASO World Russia 2026, RevenueCat Blog (app-to-web), Adapty Blog (alternative payments), softwarelead.pro (Pay SDK migration).*
|