Розроблення мобільного застосунку для підписки на контент (Patreon-модель)
Patreon-модель на мобілці упирається в один ключовий конфлікт: App Store та Google Play вимагають, щоб цифровий контент продавався через їх IAP (In-App Purchase) з комісією 15–30%. Але творець контенту вже продає той же контент через веб-сайт дешевле. Користувач це бачить, задає неудобні питання, а застосунок ризикує відклученням за нарушення п. 3.1.1. Правильна архітектура починається з юридичної та технічної відповіді на це питання.
IAP vs зовнішні платежи: де границя
App Store правила дозволяють «reader apps» (застосунки, які відкривають контент, куплений зовні) посилатися на зовнішній сайт для покупки — з дозволом Apple External Link Account entitlement (доступна у США, ЄС за DMA, Південній Кореї). На практиці:
- Підписка оформлена через веб — застосунок тільки відкриває контент, не продає. Review проходить, якщо немає CTA «Підпишись» всередині застосунку ведучого на IAP, та є External Link entitlement там де дозволено.
- IAP-підписка всередині застосунку — Apple/Google беруть комісію 15–30%. Зато бесшовний UX, та застосунок може пропонувати підписку прямо в app.
- Гібрид — web-покупка для нових підписчиків (зовнішнє посилання), IAP для тих хто хочет купити in-app. Легально, але складніше підтримувати два billing flow.
Архітектура доступу до контенту
EntitlementManager — центральний компонент. Джерела правди про доступ:
- StoreKit 2 Transaction.currentEntitlements (якщо IAP).
- Backend subscription status (якщо web-billing або RevenueCat як агрегатор).
При старті застосунку: паралельно перевіряємо обидва джерела, беремо максимальний доступ. Сервер присилає JWT з tier, expires_at — клієнт валідує підпис, кешує. Оновлення кожні 24 години або по subscription_updated push.
Tier-based доступ: EntitlementManager.hasAccess(tier: .premium, feature: .exclusivePosts) — єдина точка перевірки. ContentRepository фільтрує фід: locked пости показуються з preview + paywall blur overlay, unlocked — повністю.
Медіаконтент та DRM
Відео для платних підписчиків не повинно бути доступно по прямому URL без авторизації. Схема: застосунок запитує signed_url з TTL 15 хвилин (/content/{id}/stream?token=...). URL підписується на сервері (CloudFront Signed URL / Google Cloud CDN Signed URLs). AVPlayer (iOS) / ExoPlayer (Android) відтворює HLS — кеширування сегментів автоматичне через AVAssetDownloadTask (iOS) для offline перегляду.
Для більш строгої захисту — FairPlay Streaming (iOS) / Widevine (Android). DRM рівня Netflix/Spotify. Вимагає ліцензійного сервера (можна інтегрувати через Axinom DRM, EZDRM, BuyDRM). Для більшості creator-платформ перекіл, але якщо контент висококонкурентний — виправданий.
Аудіо подкасти без DRM зазвичай достатня signed URLs. AVAudioPlayer / MediaPlayer / ExoPlayer для відтворення, фоновий через AVAudioSession (.playback category) + CommandCenter (iOS) / MediaSession API (Android) — управління з екрана блокування.
Лента постів та взаємодія з автором
Chronological + algorithmic feed через UICollectionView DiffableDataSource / Jetpack LazyColumn. Пагінація — cursor-based (не offset — при додаванні нових постів offset зміщується). FeedRepository з Paging 3 (Android) або власним PaginatedFeedLoader (iOS).
Коментарі з real-time оновленням через WebSocket або long polling. Реакції — optimistic update: UI оновлюється немедленно, у фоні йде API запит, при помилці откатуємо. Це стандартний паттерн для низької perceived latency.
Прямі трансляції (live) — HLS + low latency mode (Apple LL-HLS / DASH) з AVPlayer / ExoPlayer. Чат у прямому ефірі — WebSocket.
Уведомлення та вовлеченість
Push про новий пост від автора, на якого підписан користувач. На клієнті — настройки нотифікацій per-creator: користувач вибирає, від кого отримувати push. Токен пристрою зберігається на сервері привязаним до creator_subscription_ids — сервер відправляє push тільки релевантній аудиторії, не broadcast всім.
Процес роботи
Аналіз App Store / Play Store політик для конкретної моделі монетизації → проектування EntitlementManager та billing flow → розроблення фіду + медіаплеєра + paywall → push-уведомлення → QA (включаючи subscription edge cases: grace period, refund, restore purchases) → публікація.
Ориентири по срокам
MVP (фід постів, відео/аудіо плеєр, IAP підписка, базові коментарі): 5–8 тижнів. Повнофункціональна creator-платформа з live стримингом, DRM, аналітикою для авторів та підтримкою кількох tier підписок: 3–4 місяця.







