Чому волонтерам потрібен окремий додаток?
Організації часто намагаються керувати волонтерами через Google Forms і чати. Це призводить до втрати даних: хто прийшов, скільки годин відпрацював. Сотні сповіщень у загальному чаті — волонтери перестають їх читати. Ручний облік займає у координатора до 10 годин на тиждень. В одному проекті для НКО координатор витрачав 12 годин на тиждень на звірку Excel-таблиць — після впровадження додатка цей час скоротився до 30 хвилин. Ми вирішуємо цю проблему за допомогою розробки мобільного додатка для волонтерства, який включає карту заходів, check-in через QR або геолокацію, облік відпрацьованих годин та автоматичну генерацію сертифікатів.
Як організувати геолокацію заходів?
Карта з маркерами заходів — основа. Використовуємо MapKit (iOS) або Google Maps SDK (Android). При 50+ подіях обов'язкова кластеризація: MKAnnotationView з MKClusterAnnotation на iOS, ClusterManager з Maps Utils на Android. Пошук найближчих подій — запит до сервера з параметрами lat, lng, radius. На сервері — PostGIS ST_DWithin() або формула Haversine. Фільтр за категорією, датою, організацією. Геофенсинг для сповіщень про нові заходи в радіусі: CLLocationManager.startMonitoring(for: CLCircularRegion) (iOS) або Geofencing API (Android). Ліміт iOS — 20 регіонів одночасно. Для масштабування динамічно оновлюємо набір регіонів при переміщенні користувача на 500 метрів.
Щоб реалізувати геофенсинг коректно, необхідно враховувати дозволи користувача. Згідно з App Store Review Guidelines, додатки повинні запитувати доступ до геолокації тільки при використанні та пояснювати мету. Ми додаємо екран онбордингу з описом, навіщо потрібна геолокація.
Що дає облік волонтерських годин?
Після check-in години нараховуються автоматично або підтверджуються організатором. У профілі — історія по місяцях і категоріях, сумарно за рік. Наприклад, за 6 місяців волонтер може накопичити 200 годин при щотижневій участі. Сертифікати генеруємо в PDF на сервері (WeasyPrint або Puppeteer), завантаження через URLSession.downloadTask. На iOS відкриваємо через UIActivityViewController — зберегти, роздрукувати або відправити.
Порівняння способів check-in
| Спосіб | Швидкість | Надійність | Вимоги до обладнання |
|---|---|---|---|
| QR-код | <1 сек | Висока | Камера смартфона, екран організатора |
| Геолокація | 3–5 сек | Середня (залежить від GPS) | Включений GPS |
| Ручна відмітка | 10+ сек | Висока | Немає |
QR-код швидше за геолокацію в 2–3 рази, але вимагає контакту. Геолокація зручна на вулиці, але може давати збої в приміщеннях. Комбінуємо обидва методи: на вулиці — геолокація, в залі — QR. Така гнучкість дозволяє охопити 95% сценаріїв.
Які технології використовуємо для різних платформ?
| Компонент | iOS | Android | Крос-платформа |
|---|---|---|---|
| UI | SwiftUI | Jetpack Compose | Flutter / React Native |
| Карти | MapKit | Google Maps SDK | flutter_map / react-native-maps |
| Камера (QR) | AVFoundation | CameraX | camera (pub.dev) / react-native-camera |
| Push | APNs | FCM | firebase_messaging / react-native-firebase |
| Зберігання | CoreData / CloudKit | Room | Hive / WatermelonDB |
Для єдиної кодової бази обираємо Flutter або React Native з нативними картами. Якщо важлива продуктивність анімацій та нативний UI — нативний iOS/Android.
Як налаштувати push-сповіщення для волонтерів?
Push-сповіщення — ключовий канал зв'язку. На iOS використовуємо APNs з пріоритетом critical для термінових подій (скасування заходу), на Android — FCM з каналами сповіщень. Токени пристроїв зберігаємо в базі, при відправці фільтруємо за гео та інтересами. Deep linking (Universal Links / App Links) веде прямо на сторінку заходу. Для цього налаштовуємо apple-app-site-association та assetlinks.json. Це дає до 70% переходів зі сповіщень у додаток.
Етапи розробки
- Аналітика: вивчаємо процеси, проектуємо рольову модель (волонтер, організатор), прототипуємо екрани.
- Проектування: налаштовуємо геофенсинг, push (FCM/APNs), deep linking (Universal Links / App Links).
- Реалізація: пишемо код на SwiftUI або Jetpack Compose, інтегруємо карти та камеру.
- Тестування: перевіряємо check-in на 10+ пристроях, навантаження push до 10 000 одночасних.
- Деплой: публікація в App Store та Google Play з урахуванням App Store Review Guidelines (Section 4.2/5.1), Code Signing та provisioning profiles.
Що входить в результат
- Вихідний код з документацією збірки.
- Доступи до App Store Connect / Google Play Console.
- Інтеграція з вашим бекендом (REST/GraphQL) або налаштування Firebase / Supabase.
- CI/CD (GitHub Actions / Bitrise).
- Навчання команди (2 вебінари).
- Технічна підтримка 1 місяць.
Чому обирають нас?
Більше 5 років розробляємо мобільні додатки. Запустили 30+ проектів для НКО та соціальних стартапів. Кожен додаток проходить аудит безпеки (ProGuard/R8, захист від трасування). Гарантуємо відповідність політикам сторів. Середня економія часу координатора після впровадження становить 10 годин на тиждень, що дозволяє значно скоротити витрати. Отримайте консультацію — проаналізуємо вимоги, запропонуємо архітектуру та назвемо терміни за 2 дні. Зв'яжіться з нами вже сьогодні.
Приклад конфігурації геофенсингу на iOS
let region = CLCircularRegion(center: CLLocationCoordinate2D(latitude: 53.9, longitude: 27.56), radius: 100, identifier: "event1") region.notifyOnEntry = true region.notifyOnExit = false locationManager.startMonitoring(for: region) Ліміт 20 регіонів — оптимізація через динамічне оновлення при зміні міста.







