Миграция мобильного приложения на новую версию iOS SDK

Отметим: когда вы собрали очередную сборку для App Store, через час пришло письмо: «ITMS-91053: Missing Privacy Manifest». С каждой новой версией iOS SDK Apple отключает старые API и вводит обязательные требования. Без плановой миграции вы рискуете остаться без сабмишенов. Мы часто сталкиваемся с та

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

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

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

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Миграция мобильного приложения на новую версию iOS SDK
Средний
~3-5 дней

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

Часто задаваемые вопросы

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    597

Отметим: когда вы собрали очередную сборку для App Store, через час пришло письмо: «ITMS-91053: Missing Privacy Manifest». С каждой новой версией iOS SDK Apple отключает старые API и вводит обязательные требования. Без плановой миграции вы рискуете остаться без сабмишенов. Мы часто сталкиваемся с такими ситуациями и предлагаем миграцию под ключ — с аудитом, обновлением и гарантией.

Что реально ломается при смене SDK

Deprecated API — самая объёмная часть работы. UIWebView удалён начиная с iOS 15 SDK, приложения с его использованием получают rejection по ITMS-90809. UIAlertView, UIActionSheet, shouldAutorotateToInterfaceOrientation — в iOS 16 SDK эти методы уже не компилируются. Поиск по кодовой базе через Xcode #available + список deprecated из release notes конкретной версии.

Privacy Manifest (iOS 17 SDK) — новое с последних версий. Каждая сторонняя зависимость и само приложение должны иметь PrivacyInfo.xcprivacy файл с декларацией используемых API категорий (NSPrivacyAccessedAPITypes): NSUserDefaults, NSFileManager, NSProcessInfo, UIDevice.systemBootTime. Если файл отсутствует — ITMS-91053 предупреждение при сабмите, ставшее ошибкой.

Пример PrivacyInfo.xcprivacy:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...> <plist version="1.0"> <dict> <key>NSPrivacyAccessedAPITypes</key> <array> <dict> <key>NSPrivacyAccessedAPIType</key> <string>NSPrivacyAccessedAPICategoryUserDefaults</string> <key>NSPrivacyAccessedAPITypeReasons</key> <array> <string>CA92.1</string> </array> </dict> </array> </dict> </plist> 

Причины (Reasons) — конкретные коды из документации Apple. CA92.1 для UserDefaults означает «хранение настроек, непосредственно управляемых пользователем». Нельзя просто написать любой код — нужно выбрать из утверждённого списка. Если нет подходящего — писать в Apple через App Review, что само по себе квест.

Swift Concurrency и Sendable — в iOS 16+ SDK включены расширенные проверки Sendable и actor isolation. Проект, собиравшийся без предупреждений на старом SDK, на новом выдаёт десятки warnings вида Capture of non-Sendable type 'SomeModel'. С iOS 17 SDK часть из них стала ошибками при strict concurrency checking: complete. На крупных кодовых базах это серьёзная работа.

Как проходит процесс миграции?

  1. Аудит через xcodebuild

    xcodebuild -workspace MyApp.xcworkspace \ -scheme MyApp \ -destination 'generic/platform=iOS' \ -sdk iphoneos17.0 \ build 2>&1 | grep -E "error:|warning:" | sort | uniq -c | sort -rn | head -50 

    Это даёт количественную картину: сколько ошибок, какие категории, топ-50 по частоте. На 300k строках кода типичная картина при прыжке с iOS 14 SDK на iOS 17 SDK — 15–40 errors и 100–300 warnings. Наш подход с автоматическим аудитом быстрее ручного просмотра кода в 10–15 раз.

    Анализ сторонних зависимостей Вторая проблема — библиотеки, не обновлявшиеся два года. Чеклист:

    • CocoaPods: pod outdated для списка устаревших зависимостей
    • SPM: проверяем Package.resolved, ищем библиотеки без свежих тегов на GitHub
    • Зависимости с устаревшим deployment target — конфликт с новым минимальным iOS приложения

    Особый случай — зависимости без Privacy Manifest. Apple требует manifests от популярных SDK (Firebase, Crashlytics, Amplitude, Adjust и другие обновили свои пакеты). Но для менее известных библиотек манифеста может не быть, и тогда нужно или форкнуть и добавить, или избавиться от зависимости.

    Миграция по уровням сложности

    Категория изменений Трудоёмкость
    Замена UIWebViewWKWebView Средняя (меняется API делегатов)
    Privacy Manifests для кастомного кода Малая (конфигурация)
    Privacy Manifests для сторонних SDK Зависит от поддержки авторов
    Sendable/actor isolation warnings Высокая (архитектурные правки)
    Удалённые API (UIAlertView и др.) Малая (прямая замена)

Что входит в работу

  • Полный аудит кодовой базы с xcodebuild и выявление всех blocked API
  • Настройка Privacy Manifest для приложения и всех зависимостей
  • Обновление сторонних SDK до версий, совместимых с новым iOS SDK
  • Исправление Sendable/actor isolation warnings
  • Тестирование на реальных устройствах с новым iOS
  • Документация изменений и рекомендации по дальнейшей поддержке
  • Гарантированная поддержка в течение 30 дней после сдачи

Как мы тестируем после миграции?

Smoke-тесты на реальном устройстве с новым iOS — обязательно. Simulator и реальное устройство могут вести себя по-разному при смене SDK, особенно в части URLSession timeouts, push notifications, background execution.

Crashlytics или Firebase Crash Reporting — после релиза мониторим новые crash-сигнатуры в первые 24–48 часов. SDK-миграция иногда приносит краши в edge cases, не покрытых тестами.

Ориентиры по срокам

Сроки зависят от размера кодовой базы, количества deprecated API и состояния зависимостей:

Проект Срок
Небольшое приложение (< 50k строк, мало зависимостей) 1–2 дня
Средний проект (50–150k строк) 3–5 дней
Большой проект с legacy Obj-C кодом 1–2 недели

Стоимость рассчитывается индивидуально, но вы экономите на раннем выявлении проблем — затраты на миграцию всегда ниже, чем последствия блокировки релизов. Свяжитесь с нами для точной оценки. Опыт миграции более 50 проектов гарантирует, что мы учтём все подводные камни. Получите консультацию по вашей кодовой базе — мы проведём аудит за один день.

Apple App Store Review Guidelines