Реализация Freemium-модели монетизации мобильного приложения
Freemium — не «бесплатная версия с ограничениями». Freemium — это спроектированный опыт, где бесплатная версия достаточно хороша, чтобы пользователь остался, но недостаточно хороша, чтобы premium не нужен. Неправильно нарезанная граница бесплатного/платного — либо убивает activation, либо убивает конверсию.
Где провести границу
Три работающих паттерна нарезки freemium:
Feature gating. Базовые функции бесплатны, продвинутые — за деньги. Пример: неограниченное создание задач (бесплатно) + коллаборация с командой (premium). Проблема: если платные фичи можно получить у конкурента бесплатно — смысл теряется.
Usage limits. Те же функции, но с лимитами: 3 проекта бесплатно, неограниченно — в premium. AI-запросы: 10 в день бесплатно, неограниченно — платно. Лимиты должны быть достаточными, чтобы понять ценность, но недостаточными чтобы полноценно использовать.
Quality gating. Экспорт без водяного знака, высокое качество рендера, приоритетная обработка — всё это premium уровни той же функции. Популярно в media/creative приложениях.
На клиенте каждая фича проверяется через EntitlementManager.canUse(.featureName). Централизованная логика — не if-else по всему коду, а единый FeatureFlag + Entitlement layer.
Soft gate vs Hard gate
Hard gate — функция недоступна для бесплатных пользователей физически (кнопка неактивна или скрыта). Используем для функций, которые требуют серверных ресурсов (AI processing, cloud storage).
Soft gate — функция доступна, но при попытке использовать показывает paywall. Tap на locked feature → bottom sheet с описанием что разблокирует premium → CTA купить. Этот паттерн конвертирует лучше hard gate: пользователь видит ценность фичи, прежде чем ему предлагают купить.
На iOS реализация soft gate через FeatureGateModifier в SwiftUI:
Button("Export HD") { viewModel.exportHD() }
.featureGated(.hdExport, paywallTrigger: .featureTap)
featureGated modifier проверяет entitlement, при его отсутствии перехватывает tap и показывает Paywall вместо действия.
Лимиты и их отображение
Пользователь должен видеть свои лимиты. Скрытый лимит, который срабатывает неожиданно («Вы достигли лимита AI-запросов») — раздражает. Лучше: прогресс-бар лимита виден всегда («7 из 10 AI запросов использовано сегодня»), при достижении 80% — мягкий nudge «Рассмотрите premium для неограниченных запросов».
Лимиты хранятся на сервере — клиент только отображает. Reset лимитов: ежедневный reset через server-side cron, клиент получает обновлённый usage_quota при запросе профиля или через push {"type": "quota_reset"}.
Конверсионные триггеры
Freemium требует продуманных моментов показа paywall. Органические триггеры (пользователь сам натолкнулся на лимит) конвертируют лучше принудительных (показали paywall через 3 дня независимо от поведения). PaywallTrigger enum: .usageLimitReached, .featureTapped, .exportAttempted, .scheduled(day: 7) — каждый триггер имеет свой A/B тест.
Retention-driven upsell: если пользователь регулярно использует приложение 7 дней — показываем paywall с messaging «Ты активный пользователь, получи максимум». Это лучше перводневного paywall: Day-7 retention у таких пользователей 70%+, значит ценность они поняли.
Downgrade-сценарий
Пользователь отменил подписку — переходит на бесплатный план. Плавный downgrade, а не жёсткий. Если у него было 15 проектов и бесплатный лимит 3 — не удаляем 12 проектов мгновенно. Помечаем как read-only при downgrade, показываем сообщение «Ваши 15 проектов сохранены — восстановите premium для редактирования». Это мотивирует вернуться.
На клиенте DowngradeManager при смене entitlement с premium на free вычисляет, какой контент выходит за лимиты, и обновляет UI без удаления данных.
StoreKit 2 / Play Billing интеграция
Auto-renewable subscription: product.subscription?.renewalInfo содержит willAutoRenew — показываем на экране настроек статус подписки. Manage subscription: URL(string: "https://apps.apple.com/account/subscriptions") для iOS, launchBillingFlow с SubscriptionUpdateParams для upgrade/downgrade между планами на Android.
Процесс работы
Проектирование Feature Map (что входит в free, что в premium) → EntitlementManager + FeatureGate layer → лимиты и их отображение → paywall-триггеры → StoreKit 2 / Play Billing подписка → downgrade-логика → A/B тест setup → QA → публикация.
Ориентиры по срокам
Реализация freemium-модели с EntitlementManager, feature gating, лимитами и soft/hard gates — 5 рабочих дней при готовой IAP интеграции. С нуля включая StoreKit 2 / Play Billing setup — 1,5–2 недели.







