TGViewer
Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck Библиотека мобильного разработчика | Android, iOS, Swift, Retrofit, Moshi, Chuck @mobileproglib · 9.17K subscribers
Post #7112 641
🎮 Что нужно знать о манифестах конфиденциальности в iOS

Многие iOS-приложения содержат сторонние зависимости, такие как SDK для аналитики, сетевые библиотеки или инструменты для сбора отчетов о сбоях. Некоторые из этих зависимостей могут собирать данные или получать доступ к API, влияющим на конфиденциальность.

Манифесты конфиденциальности помогают сделать такое поведение более прозрачным. В этом посте мы рассмотрим, что такое манифесты конфиденциальности, как они связаны со сторонними SDK и что означают API с требуемыми основаниями для заявлений о конфиденциальности.

Давайте приступим.

🔹 Что такое манифест конфиденциальности?

Манифест конфиденциальности — это файл, в котором в стандартном формате описывается поведение приложения или SDK, связанное с конфиденциальностью.

Файл называется PrivacyInfo.xcprivacy и добавляется в цель приложения или в SDK. В нем может содержаться такая информация, как:

🔵 какие типы данных собираются
🔵 связаны ли собранные данные с пользователем
🔵 используются ли собранные данные для отслеживания
🔵 к каким API обращаются по необходимости

Чтобы добавить его в Xcode, мы можем выбрать Файл -> Создать -> Файл и выбрать Конфиденциальность приложения шаблон файла. Xcode создает файл с именем PrivacyInfo.xcprivacy, который должен быть включен в целевое членство приложения или SDK, декларирующего политику конфиденциальности.

Манифест конфиденциальности сам по себе не собирает данные и не меняет поведение приложения во время работы. Это файл с декларацией, который помогает описать, что делает приложение или SDK с точки зрения конфиденциальности.

Например, если приложение отправляет адрес электронной почты пользователя на серверную часть для работы с аккаунтом и использует UserDefaults для хранения настроек приложения, манифест может содержать такие записи:

<key>NSPrivacyTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypes</key>
<array>
<dict>
<key>NSPrivacyCollectedDataType</key>
<string>NSPrivacyCollectedDataTypeEmailAddress</string>
<key>NSPrivacyCollectedDataTypeLinked</key>
<true/>
<key>NSPrivacyCollectedDataTypeTracking</key>
<false/>
<key>NSPrivacyCollectedDataTypePurposes</key>
<array>
<string>NSPrivacyCollectedDataTypePurposeAppFunctionality</string>
</array>
</dict>
</array>
<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>


В этом примере указано, что приложение не использует собранные данные для отслеживания, собирает адрес электронной почты для работы приложения и обращается к UserDefaults с указанием необходимой категории API.

В Xcode файл можно редактировать как список свойств, поэтому обычно нам не приходится писать XML вручную.

🔹 Заявления о конфиденциальности и сторонние SDK

Заявления о конфиденциальности особенно важны для сторонних SDK, поскольку поведение приложения в отношении конфиденциальности не ограничивается его собственным исходным кодом.

Если мы интегрируем SDK для аналитики, SDK для отчетов о сбоях, SDK для аутентификации или другую зависимость, этот код также может собирать данные или получать доступ к API, влияющим на конфиденциальность. Манифест конфиденциальности делает эту информацию более наглядной, показывая, что декларирует SDK и соответствует ли это тому, как мы используем SDK в приложении.

🔹 Создание отчета о конфиденциальности в Xcode

После архивирования приложения мы можем использовать Xcode для создания отчета о конфиденциальности.

Отчет о конфиденциальности — это сводная информация для разработчиков. Она помогает нам проверять заявления о конфиденциальности в приложении и его встроенных зависимостях перед отправкой приложения. Эта информация может использоваться для обеспечения точности маркировки конфиденциальности в App Store.

🔹 Необходимые API

Необходимые API — это API, которые Apple считает чувствительными к вопросам конфиденциальности, поскольку они потенциально могут использоваться для снятия цифровых отпечатков.

Снятие цифровых отпечатков — это сбор данных об устройстве или пользователе и их объединение для идентификации пользователя в разных приложениях или на разных веб-сайтах. Некоторые API на первый взгляд не связаны с конфиденциальностью, но в сочетании с другими сигналами могут раскрыть полезную информацию об устройстве.

Примеры категорий API, для которых требуется обоснование:

🔵 API с меткой времени файла
🔵 API времени загрузки системы
🔵 API дискового пространства
🔵 API активной клавиатуры
🔵 API пользовательских настроек

Если приложение или SDK используют один из этих API, в манифесте конфиденциальности необходимо указать категорию API и обосновать его использование.

Пример объявления для использования UserDefaults может выглядеть так:

<key>NSPrivacyAccessedAPITypes</key>
<array>
<dict>
<key>NSPrivacyAccessedAPIType</key>
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
<key>NSPrivacyAccessedAPITypeReasons</key>
<array>
<string>CA92.1</string>
</array>
</dict>
</array>


Здесь NSPrivacyAccessedAPICategoryUserDefaults обозначает категорию используемого API, а CA92.1 — код одобренной причины. В данном случае CA92.1 означает, что приложение обращается к UserDefaults для чтения или записи информации, которая используется только самим приложением, например локальных настроек или предпочтений.

Это также относится к сторонним SDK. Даже если код нашего приложения не обращается напрямую к API, требующему указания причины, это может делать SDK. В таком случае в манифесте конфиденциальности SDK должно быть указано такое использование.

📌 Лучшие вакансии для мобильных разработчиков

🐸 Библиотека мобильного разработчика

#АрхитектурныйКод #MiddlePath #iOS
  • 🤩 1
More from @mobileproglib
  1. Sep 15, 2026😭 Как не потратить недельный лимит AI-кодинга за три дня? Разберём на вебинаре, как трати…
  2. Sep 15, 2026🖥 Наглядная шпаргалка по операторам Combine Внутри: описанием распространенных операторов…
  3. Sep 13, 2026🌸 Вселенная намекает: пора уже начать этот курс С 14 сентября цены в Proglib Academy выра…
  4. Sep 13, 2026🤪 Если бы можно было задать один вопрос про AI в разработке — что бы вы спросили? Как выб…
  5. Sep 9, 2026🤳 Как работает мобильная разработка с AI под капотом — интенсивы от Podlodka Crew Конфере…
  6. Aug 8, 2026⚙️ Kinetics — настраиваемые примитивы физического движения для SwiftUI Kinetics привносит…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →