• iOS SDK для офлайн-сканирования QR и валидации билетов с криптоподписью и логированием (Swift, iOS 15+)

    1 день назад
    • Желаемый бюджет до 900.51 USD
    • Ожидает исполнителя...
  • Исходная ситуация: у нас есть iOS-приложение для контроля доступа на мероприятия. Сейчас проверка билетов идет через сервер, из-за чего на площадках с плохим интернетом возникает очередь. Нужно сделать внутренний iOS SDK-модуль, который позволит валидировать билеты полностью офлайн и синхронизировать результаты позже.

    Техническая среда и предметная область: iOS 15+, Swift 5.9+, Xcode 15+, SPM. Сканирование - AVFoundation. Хранение - CoreData или SQLite (обсудим, но нужна работа офлайн и устойчивость к падениям). Криптография - CryptoKit. Формат билета - QR, внутри base64url payload в виде JSON. Валидация - проверка подписи Ed25519 и проверка правил (мероприятие, дата, зона, повторное использование).

    Что должно получиться в итоге: 1) Swift Package (SPM) с публичным API, который можно подключить в наше приложение. 2) Пример интеграции (маленький demo target или sample app внутри репозитория) только чтобы показать вызовы API и поток данных. 3) Набор unit-тестов и базовые performance-тесты для критичных частей (парсинг, валидация, запись событий).

    Функциональные требования: 1) Сканирование QR через AVFoundation с поддержкой непрерывного потока - возврат результата в виде структурированного объекта (ticketId, eventId, zoneId, issuedAt, validFrom, validTo, signature). 2) Офлайн-валидация - проверка Ed25519 подписи по публичному ключу мероприятия, проверка временного окна и зоны, защита от повторного использования билета на одном устройстве (локальный анти-реюз). 3) Очередь событий - все попытки сканирования и решения (accepted/denied + причина) пишутся в локальное хранилище и могут быть выгружены позже пачками. 4) Синхронизация - метод SDK, который принимает callback/протокол для отправки пачки на наш API (сетевой слой у нас свой, поэтому SDK не должен навязывать конкретную HTTP-библиотеку). Должны быть ретраи, дедупликация и отметка успешно отправленных событий. 5) Управление ключами - возможность обновить набор публичных ключей (например, ключи для нескольких eventId) через конфиг и сохранить локально. Должна быть версия конфигурации и безопасная замена без потери возможности проверять ранее выданные билеты.

    Ограничения: 1) Работа строго офлайн при сканировании - никаких сетевых запросов в момент проверки. 2) Нельзя использовать сторонние тяжелые SDK для сканирования или баз данных - только стандартные Apple фреймворки или очень легкие зависимости через SPM по согласованию. 3) Публичное API пакета должно быть минимальным и документированным в комментариях (SwiftDoc). 4) Код должен быть совместим с iOS 15 и новее, без private API.

    Критерии приемки (измеримые): 1) Валидация корректного билета с проверкой подписи выполняется не дольше 30 мс на iPhone 12 в релизной сборке в среднем по 100 прогонам. 2) SDK корректно отклоняет минимум 6 типов ошибок с понятными кодами/причинами - неверная подпись, просрочен, еще не активен, неверная зона, повторное использование, неизвестный eventId/ключ. 3) После 500 сканирований офлайн все события доступны в очереди и не теряются при принудительном завершении приложения (kill) и последующем запуске. 4) Unit-тестами покрыто не менее 70% логики парсинга/валидации/очереди (можно по Xcode coverage). 5) Sample интеграция демонстрирует: старт сканера, получение результата, вызов validate, запись события и запуск sync.

    Этапы выполнения: 1) Уточнение формата payload и протокола синхронизации, фиксация публичного API SDK. 2) Реализация ядра - парсер, криптопроверка, правила валидации. 3) Реализация хранилища и очереди событий + дедупликация. 4) Интеграция сканера, sample, тесты и оптимизация.

    Мы предоставим: примеры QR payload, тестовые Ed25519 ключи, мок-спецификацию API для выгрузки событий и список бизнес-правил по зонам/времени.
  • Как вы оцениваете это задание?

    Войдите в аккаунт, чтобы оставить свою оценку.

    Всего оценок: 0

Ваше предложение

Вы ещё не оставили предложение к этому заказу.
Нажмите «Предложить услугу», чтобы отправить своё предложение.

Нужно похожее задание?

Если задача похожа на вашу, можно посмотреть готовые услуги в категории или создать свое задание с нужным бюджетом, сроками и требованиями.

Задание «iOS SDK для офлайн-сканирования QR и валидации билетов с криптоподписью и логированием (Swift, iOS 15+)» можно использовать как ориентир для своего брифа: что нужно сделать, какой результат нужен и какой бюджет указать.