Розробка мобільного додатку для державних послуг
Госуслуги — це не просто CRUD з авторизацією. Це інтеграція з ФНС, цифровими підписами, ЕСІА, чергами СМЕВ, XML-схемами віком у 12 років. Плюс — обов'язкова сертифікація, закони про захист даних, зберігання персональних даних на серверах РФ. Перед першою строкою коду розберіться з регуляторикою.
Авторизація через ЕСІА та цифрові підписи
Найболючіша точка. ЕСІА працює через модифіковану OAuth 2.0. Підпис запиту — ГОСТ Р 34.10-2012, не RSA. Стандартна бібліотека типу AppAuth не підійде напряму — потрібен SDK від Ростелеком або реалізація підпису через CryptoPro або ViPNet.
На Android: CryptoPro CSP вбудований як .apk-провайдер. Сертифікат користувача в сховищі CryptoPro, доступ через custom KeyStore:
val keyStore = KeyStore.getInstance("CryptoProKeyStore")
val privateKey = keyStore.getKey(alias, null) as PrivateKey
val signature = Signature.getInstance("GOST3411withGOST3410EL")
signature.initSign(privateKey)
signature.update(dataToSign)
val signedData = signature.sign()
На iOS: ViPNet CSP SDK через Obj-C/C++ обгортку. Bridging header, статичне лінкування, ручне управління пам'яттю. У проекті cold start виріс з 1.2 до 2.8 секунд — вилучили ініціалізацію у background thread.
Інтеграція Госключа через Deep Link: додаток формує запит, передає у Госключ через URL-схему, отримує callback з підписаним документом. З fallback на веб, якщо додаток не встановлено. Обережне управління станом у UIApplicationDelegate / Activity.onNewIntent.
СМЕВ та ГІС інтеграція
СМЕВ 3 працює через SOAP з WS-Security. Мобільний не спілкується напряму — лише backend. Все одно складно: XML-схеми великі, потрібна валідація на клієнті перед відправкою.
На Android використовуємо javax.xml.validation з XSD. На iOS — libxml2 через C-біндинги або JSON-API через backend-прокси.
Статуси заявок — асинхронний процес: подача, обробка 3–5 робочих днів, сповіщення. Потрібен polling або push через FCM/APNs. Push часто містять лише serviceId — потрібен окремий запит даних перед навігацією.
Вимоги до зберігання та безпеки
ФЗ-152 вимагає зберігання персональних даних на території РФ. Для мобільного: backend на російських серверах (Яндекс.Облако, SberCloud, VK Cloud), запрет на передачу через зарубіжні CDN.
Локальне зберігання чутливих даних — лише EncryptedSharedPreferences на Android (AES256-GCM через Jetpack Security) або Keychain на iOS з kSecAttrAccessibleWhenUnlocked. Токени ЕСІА ніколи в простому SharedPreferences.
Сертифікація ФСТЕК потрібна, якщо обробляємо обмежену інформацію. Використовуємо лише сертифіковані криптобібліотеки.
Сканування вразливостей перед релізом обов'язкове. Використовуємо MobSF, OWASP Mobile Top 10 чеклист.
UX для державних додатків
Аудиторія — 18–80 років з різним рівнем цифрової грамотності. Шрифт — крупніший. Підтримка Dynamic Type (iOS) та sp-одиниць (Android). Форми — короткі кроки, без багатоступінчастих wizard без збереження прогресу.
Доступність (a11y): contentDescription для значимих елементів, правильні accessibilityRole. Додатки перевіряє Роскомнадзор включно з доступністю.
Оффлайн-режим критичний: не у всіх стабільний інтернет. Кешуємо довідники через Room / Core Data. Синхронізуємо статуси при відновленні зв'язку через WorkManager (Android) або BGTaskScheduler (iOS).
Стек та архітектура
Для більшості державних додатків — нативна розробка оптимальна: iOS (Swift + UIKit/SwiftUI) + Android (Kotlin + Jetpack Compose). Flutter — прийнятний, якщо команда підготовлена. React Native з react-native-crypto — ризиковано.
Архітектура: Clean Architecture + MVVM. Repository ізолює СМЕВ/ЕСІА від UI. UseCase містить бізнес-логіку. ViewModel керує станом. DI — Hilt (Android) / Swinject (iOS).
Сроки
Аудит вимог — включно з юридичною експертизою: які дані обробляються, сертифікація потрібна, які API ЕСІА/СМЕВ. Без цього — неможливо технічне проектування.
Дизайн: UX для аудиторії, схема авторизації, модель даних, API-контракти.
Розробка: ітеративно — авторизація та core-flow спочатку, потім форми та довідники, потім push та оффлайн.
Публікація: RuStore обов'язковий для державних додатків з 2023 року. Google Play та App Store — паралельно.
Підтримка: ЕСІА API та СМЕВ схеми змінюються без повідомлення. Моніторимо через Firebase Crashlytics + власні алерти на зміну структури.
Сроки MVP (авторизація + 2–3 послуги): 3–5 місяців. Повний додаток з широким каталогом — 8–14 місяців. Вартість розраховується індивідуально.







