🎮
Что нужно знать о манифестах конфиденциальности в 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