Як розробити мобільний застосунок для релігійних організацій?
Релігійні організації стикаються з унікальними технічними викликами: багатомовність з RTL-підтримкою (арабська, іврит), точне відображення священних текстів, розклад богослужінь, медіатека та пожертви. Наша команда має 5-річний досвід і реалізувала понад 30 проєктів у цій ніші. Ми знаємо, як обійти типові граблі: неправильний рендеринг арабських лігатур на старих Android, off-by-one помилки в хіджрі-календарі або відхилення застосунку через порушення Section 4.2 App Store Review Guidelines. Оцінимо ваш проєкт і запропонуємо рішення в найкоротші терміни. Зв'яжіться з нами для консультації.
Які особливості потрібно врахувати? — розробка мобільного застосунку
Релігійні застосунки вимагають точного рендерингу складних скриптів, роботи з місячними календарями та фонових сповіщень. Звичайний корпоративний застосунок не підходить: потрібна RTL-типографіка, розрахунок часу намазу та аудіо/відео з фоновим відтворенням. Наприклад, неправильна обробка арабських лігатур на старих Android-пристроях призводить до некоректного відображення — вирішується встановленням minSdkVersion 21+ і використанням HarfBuzz.
Які технічні складності вирішуємо?
Тексти та типографіка
Священні тексти — не звичайний контент. Коран вимагає Arabic script з правильним tashkeel (оголосками), Тора — іврит з нікудот. RTL-текст на мобільних: iOS UIKit працює з NSAttributedString + NSParagraphStyle, directional атрибути через NSMutableParagraphStyle.baseWritingDirection = .rightToLeft. У SwiftUI — environment(\.layoutDirection, .rightToLeft).
На Android: android:textDirection="rtl" або TextView.textDirection = TEXT_DIRECTION_RTL. Для коректного рендерингу складних скриптів — HarfBuzz (вбудований в Android 5+) та ICU. Проблема з арабськими лігатурами на старих Android-пристроях: HarfBuzz pre-5.0 не підтримує всі контекстуальні форми букв. Target minSdkVersion 21+ вирішує більшість проблем.
| Платформа | Інструмент | Особливості |
|---|---|---|
| iOS | NSAttributedString + baseWritingDirection | Працює з системними шрифтами; SwiftUI через layoutDirection |
| Android | textDirection + HarfBuzz | Вимагає API 21+; можна використовувати ICU для календарів |
| Flutter | Directionality + TextDirection.rtl | Єдиний підхід для обох платформ |
Шрифти: для арабської — Amiri, Scheherazade New (SIL). Для івриту — Frank Rühl Libre, Miriam. Bundled fonts замість системних — гарантія коректного рендерингу на всіх пристроях.
Як розрахувати час намазу?
Намаз-розклад — розраховується за геолокацією на основі астрономічних алгоритмів (методи розрахунку: Muslim World League, ISNA, Karachi, MWL). Бібліотеки: Adhan (Swift/Kotlin порт — відкритий вихідний код, хороша точність). Обчислення на клієнті без мережі — критично для offline. Ісламський (хіджрі) календар: iOS Calendar(identifier: .islamicCivil) або .islamicTabular. Android java.util.Calendar не підтримує хіджрі напряму — потрібен Android android.icu.util.IslamicCalendar (API 24+) або бібліотека. Конвертація дат між григоріанським і хіджрі — часте джерело помилок off-by-one на граничних датах.
Єврейський календар: iOS Calendar(identifier: .hebrew). Рош Гашана, Yom Kippur, Песах — обчислюються відносно місячно-сонячного циклу. KosherJava (Android) — найбільш повна бібліотека для розрахунку єврейських дат і часу запалювання свічок.
Медіатека: проповіді та лекції
Проповіді — це аудіо/відео контент з тими ж вимогами, що й подкаст-плеєр: background playback, Lock Screen controls, variable speed, offline-завантаження. На iOS: AVPlayer + AVAudioSession.category = .playback. На Android: MediaSessionCompat + ExoPlayer через MediaBrowserServiceCompat для foreground service. Каталог проповідей: серії, теги (тема, оратор, дата), full-text search. Elasticsearch з підтримкою арабської морфології — arabic analyzer, стемер Snowball для Arabic (є в Elasticsearch). Для російськомовних громад — russian analyzer.
Як організувати трансляцію богослужінь?
RTMP-стримінг (OBS / мобільний енкодер) → конвертація в HLS через nginx-rtmp або AWS IVS → відтворення через AVPlayer (iOS) / ExoPlayer (Android). Для невеликих громад — YouTube Live embed в WKWebView як просте рішення. Для власної інфраструктури — Ant Media Server як self-hosted RTMP/HLS сервер. Вбудовані рішення простіші, але дають менше контролю; Ant Media Server забезпечує затримку менше 2 секунд.
| Спосіб стримінгу | Затримка | Складність | Вартість |
|---|---|---|---|
| YouTube Live | ~10 сек | Низька | Безкоштовно |
| Ant Media Server | <2 сек | Середня | Платний |
| AWS IVS | ~3 сек | Висока | Платний |
Пожертви та фінансові потоки
Прийом пожертв через Apple Pay / Google Pay: PKPaymentAuthorizationViewController на iOS, PaymentRequest API через Android Pay. Еквайринг: ЮKassa (раніше Яндекс.Каса) — добре працює з релігійними НКО, не вимагає складної верифікації для невеликих зборів. Stripe для міжнародних організацій. Наш досвід показує, що використання Apple Pay знижує кількість відмов на 20% порівняно з формами введення карток. Важливо: Apple бере 30% з In-App Purchases, але прямі платіжні SDK (Apple Pay до зовнішнього еквайрера) не підпадають під IAP fees при дотриманні App Store Review Guidelines 3.1.1.
Як приймати пожертви без комісії Apple?
Використовуйте Apple Pay з зовнішнім еквайрингом (ЮKassa, Stripe) — це не IAP. Користувач оплачує через Apple Pay, але транзакція обробляється вашим мерчантом, комісія Apple не стягується. Для регулярних пожертв налаштовуємо рекурентні платежі через SDK еквайрера. Порівняння: зовнішній еквайринг обходиться на 30% дешевше, ніж використання In-App Purchase.
Сповіщення за розкладом
Нагадування про намаз, богослужіння, піст — локальні сповіщення, не push. Вони працюють без мережі та без сервера. На iOS: UNCalendarNotificationTrigger з DateComponents — планувати на тиждень вперед при зміні налаштувань або геолокації. На Android: AlarmManager.setExact (API 31+ вимагає SCHEDULE_EXACT_ALARM дозвіл) або WorkManager з setInitialDelay. Ліміт: iOS дозволяє максимум 64 запланованих локальних сповіщень одночасно. При щоденних 5 намазах на 10 днів = 50 сповіщень — вписується. При перерахунку розкладу (користувач переїхав) — скасувати всі попередні, запланувати нові.
Як налаштувати локальні сповіщення: покрокова інструкція
- Визначте типи сповіщень (намаз, піст, свято).
- Розрахуйте дати та час на пристрої з урахуванням геолокації та обраного методу розрахунку.
- На iOS створіть
UNNotificationContentз заголовком і тілом, використовуйтеUNCalendarNotificationTrigger. - На Android використовуйте
NotificationCompat.BuilderтаAlarmManagerдля точного часу. - Заплануйте сповіщення на тиждень вперед; при оновленні розкладу скасуйте всі попередні та створіть нові.
Що входить в роботу
- Технічне завдання — детальний опис функцій, екранів, стеку.
- Дизайн — UI/UX-макети, адаптація під RTL.
- Розробка — iOS (Swift 5.9+, SwiftUI/UIKit), Android (Kotlin, Jetpack Compose) або крос-платформа (Flutter 3.x).
- Інтеграція — еквайринг, трансляції, календарі.
- Тестування — unit-тести, UI-тести, перевірка на реальних пристроях.
- Публікація — підготовка та завантаження в App Store / Google Play, проходження рев'ю.
- Підтримка — 1 місяць безкоштовної технічної підтримки після запуску.
Терміни
1–2 тижні — базовий застосунок з розкладом та медіатекою. 1–3 місяці — повнофункціональна платформа з live-трансляцією, пожертвами та RTL-підтримкою. Вартість розраховується індивідуально після аналізу вимог. Замовте розробку та отримайте детальний план. Зв'яжіться з нами для консультації.







