Разработка мобильного приложения для хранения документов (Digital Wallet)

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1735 услуг
Разработка мобильного приложения для хранения документов (Digital Wallet)
Средний
от 1 недели до 3 месяцев
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    792
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    671
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1097
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    969
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    914
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    495

Разработка мобильного приложения для хранения документов (Digital Wallet)

Паспорт в телефоне — звучит просто, пока не сталкиваешься с тем, что у пользователя iOS 15, устройство без Face ID, а документ нужно предъявить офлайн с криптографическим подтверждением подлинности. Именно здесь стандартный «файловый менеджер с красивым UI» превращается в провальный продукт, а правильный Digital Wallet — в отдельный инжиниринговый проект.

Главная инженерная проблема: где и как хранить

Большинство первых версий таких приложений делают одно и то же: сохраняют PDF в Documents/ и шифруют AES-256. Этого катастрофически мало. Проблема не в алгоритме шифрования — проблема в управлении ключами.

Если ключ хранится рядом с данными (даже обёрнутый в SecKeyCreateRandomKey), при джейлбрейке или физическом доступе к устройству данные восстанавливаются. Правильная схема: мастер-ключ создаётся в Secure Enclave на iOS (kSecAttrTokenIDSecureEnclave), он никогда не покидает чип. На Android аналог — Android Keystore с StrongBox на устройствах с выделенным HSM (Pixel 3+, Samsung с Knox). Документ шифруется производным ключом через HKDF, производный ключ — мастер-ключом. Без биометрии или PIN — ключ недоступен.

Второй болевой момент — резервные копии. По умолчанию Documents/ на iOS попадает в iCloud Backup. Документы пользователя улетают в облако без ведома разработчика. Спасает isExcludedFromBackup = true для директории хранилища и явный атрибут NSURLIsExcludedFromBackupKey.

Верификация подлинности документов при импорте

Хранить — полдела. Пользователи ожидают, что приложение умеет хотя бы базово проверить документ при загрузке: не повреждён ли PDF, совпадает ли MRZ в паспорте с визуальным содержимым, не просрочен ли документ.

Для MRZ-парсинга используем Vision framework на iOS (VNRecognizeTextRequest) или ML Kit Document Scanner на Android. OCR зоны MRZ даёт точность >98% на качественной фотографии. Для PDF — PDFKit на iOS, PdfRenderer на Android: проверяем цифровую подпись документа (PDFDocument.accessPermissions, X.509 chain в embedded CMS).

Полная цепочка верификации eIDAS/PAdES — отдельная тема, но базовый чек встроить реально за 3-4 дня.

Структура хранилища

WalletVault/
├── index.encrypted       # CBOR-манифест всех документов (ID, тип, дата, thumbnail hash)
├── docs/
│   ├── {uuid}.enc        # Зашифрованный документ (AES-GCM, 256-bit)
│   └── {uuid}.meta.enc   # Метаданные (имя, теги, срок действия)
└── keys/
    └── vault.key.ref     # Ссылка на ключ в Keychain/Keystore (не сам ключ)

Манифест-индекс позволяет отображать список документов без расшифровки самих файлов — thumbnails хранятся отдельно, пережаты до 64×64 px.

Офлайн-предъявление и верификация другой стороной

Сценарий «показать документ инспектору» требует больше, чем просто показать картинку. Для серьёзных кейсов (транспортное удостоверение, корпоративный бейдж) реализуем ISO 18013-5 (mDL — mobile Driving Licence) поверх BLE/NFC: верификатор запрашивает конкретные поля (только имя и дата рождения, без адреса), устройство отвечает подписанным CBOR-объектом. Пользователь видит, какие поля раскрываются — selective disclosure в действии.

Для менее критичных сценариев достаточно QR с подписанным JWT + короткий срок жизни (TTL 60 секунд).

Этапы работы

Аудит требований к типам документов и сценариям предъявления → проектирование схемы хранения и управления ключами → разработка Vault-модуля → интеграция OCR/MRZ-верификации → UI для управления документами → security review → публикация.

Одна платформа с базовым хранилищем: от 5 недель. Две платформы с MRZ, офлайн-верификацией по ISO 18013-5 и MDM-интеграцией: 3–5 месяцев. Стоимость рассчитывается индивидуально после анализа требований.