Как дела с приватностью у Apple в 2024? [Инструкция]

Privacy Manifest в iOS-приложениях для Apple

Как дела с приватностью у Apple в 2024? [Инструкция]
Павел Бухштаб
Руководитель iOS-разработки

C мая 2024-года отправляемые в AppStore проекты должны содержать "Privacy Manifest". Это выглядит как новые хлопоты для разработчиков, но большую часть подобной информации требовалось предоставлять и раньше. Часть этой информации в виде карточек с пиктограммами отображается в секции App Privacy на странице приложения.

Как дела с приватностью у Apple в 2024? [Инструкция]

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

Сам манифест – это очередной plist-файл (c расширением .xcprivacy), который надо добавить в проект, указав для нового файла тип "App Privacy".

Подход с Privacy Manifest файлами имеет плюсы. Если используемые библиотеки уже содержат манифест, то всё ,что они задекларируют по части privacy, подтянется автоматически. Теоретически, вам теперь не нужно сильно вникать в privacy-логику сторонних SDKs, а нужно дописать только "своё". Все манифесты объединяются в один при сборке архива. Это здорово облегчает задачу, но на практике кое-что придётся перепроверить. Сценарии использования библиотек очень разные, поэтому логично, что если манифест с библиотекой и поставляется, то содержит самый минимум, который придётся дополнить в манифесте приложения.

Как дела с приватностью у Apple в 2024? [Инструкция]

Сбор и использование данных - Privacy Nutrition Label Types

Apple позволяет с информированного согласия пользователя: собирать данные о нём для разрешённых целей.

Разобраться с этим разделом поможет видео "Create your Privacy Nutrition Label", представленное ещё на WWDC22. Можно пройтись по полному списку типов собираемых данных Collected Data Type, создавая и заполняя item для каждого используемого типа. Нужно помнить, что целей Collection Purposes у одного типа данных может быть несколько. Собираемые данные могут быть связаны с отслеживанием.

Как дела с приватностью у Apple в 2024? [Инструкция]

Отслеживание

С разрешения пользователя Apple допускает отслеживание. Пользователь имеет возможность попросить отслеживание отключить. Подробнее об истории вопроса можно почитать в статье "What is IDFA and why is this iOS update important?".

Как дела с приватностью у Apple в 2024? [Инструкция]

Исторически отслеживание осуществлялось с помощью IDFA – идентификатор для рекламодателя. В новых версиях iOS если не запросить и не получить согласие пользователя на отслеживание, то IDFA будет возвращать всегда нули. Отслеживание может осуществляться и другими способами: путем передачи данных на домены, например.

Если приложение участвует в отслеживании, то требуется добавить в манифест ключ Privacy Tracking Enabled со значением true. Далее в ключе Privacy Tracking Domains нужно перечислить все домены, которые используются для отслеживания. Privacy Tracking Domains это простая возможность для разработчика оградить пользователя от отслеживания, путём перечисления и своих и сторонних трекеров.

В видео с WWDC23 "Get started with privacy manifests" сказано:

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

Apple рекомендует разделять логику на необходимую для базового функционирования и для отслеживания по доменам. Разработчику следует убедиться, что основная функциональность не страдает, если вдруг пользователь не разрешал трекинг и трафик на трекинговые домены заблокирован. Нужно заметить, что термин "отслеживание" в данном контексте трактуется довольно узко. Судя по разъясняющему видео с WWDC2022 "Explore App Tracking Transparency" это скорее комбинация накопления данных и их обогащения или обмена с другими источниками. Если вы ни с кем не делитесь данными пользователей, то считается, что отслеживание отсутствует и можно бы внести в манифест Privacy Tracking Enabled со значением false , а список доменов оставить пустым.

Как дела с приватностью у Apple в 2024? [Инструкция]

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

Некоторые из них поставляются вместе со своими privacy manifests. Но эти манифесты минимальны и могут не покрывать всех сценариев использования библиотек в конкретном приложении.

Другие просто по - умолчанию используют отслеживание. Поэтому какие-то трекинговые домены, возможно, придётся самостоятельно выяснить и вручную внести в манифест приложения.

Как узнать используемые домены

Видео "Create your Privacy Nutrition Label" с WWDC22 предлагает обратиться к инструменту App Privacy Report, доступному на любом iOS устройстве начиная с версии 15.2. На русском он называется "Отчет о конфиденциальности приложений", найти его можно в настройках. "Отчет о конфиденциальности приложений" начинает собирать информацию только после того, как вы его включите, поэтому может пройти некоторое время, прежде чем появятся подробности. Среди прочего в секции "Сетевая активность" будут перечислены все домены, к которым обращается приложение.

Как дела с приватностью у Apple в 2024? [Инструкция]

Это общедоступный способ. В "Отчёте", кстати, неплохо видно как программы используют устройство в то время как вы используете программы. Разработчики для составления списка задействованных доменов скорее всего выберут один из инструментов профилирования или анализаторов сетевого трафика.

В Xcode есть подходящий профайлер Product → Profile → Network. – для анализа сетевой активности собственного приложения, наверное, самый доступный инструмент.

Как дела с приватностью у Apple в 2024? [Инструкция]

"Отчет о конфиденциальности приложений" имеет то преимущество, что покажет все домены за длительный период использования, а не единичную отладочную сессию, во время которой устройство привязано к среде разработки. Например, в приложении Rentel есть вставки web-контента для целей предоставления справки. Соответственно, идёт, обращение к доменам веб-метрик. Также есть домены, на которые отправляется информация об ошибках приложения.

Затрагивающие приватность API

Privacy Accessed API Types

Apple допускает открытое отслеживание с согласия пользователя, но выступает против скрытой слежки, неявной идентификации – fingerprinting.

Использование сигналов, уникальных характеристик устройства для идентификации устройства или пользователя запрещено.

Использование сигналов, уникальных характеристик устройства для идентификации

устройства или пользователя запрещено.

– говорится в видео "Explore App Tracking Transparency" с WWDC22.

Поэтому использование части системного API потенциально пригодного для сбора цифрового отпечатка – Required reason APIs – требуется обосновать.

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

Например, к Required reason APIs относится NSFileSystemFreeSize, определяющий свободное место в файловой системе. Одна из одобренных причин – использование этого API для проверки наличия достаточного места на диске перед записью файлов. Список Required reason APIs и допустимых причин опубликован в документации: "Describing use of required reason API". Для многих разработчиков стало сюрпризом, что использование реестра UserDefaults теперь тоже нужно декларировать.

Пример UserDefaults в проекте
Пример UserDefaults в проекте

Заключение

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

Манифест включает в себя следующие разделы (ключи верхнего уровня):

  • Privacy Nutrition Label Types – данные, собираемые о пользователе и характер их использования
  • Privacy Accessed API Types – privacy sensitive системное API и причины его использования
  • Privacy Tracking Enabled – использование отслеживания (да/нет)
  • Privacy Tracking Domains – список доменов, которые используются для отслеживания

✋🏻Будем благодарны вашей обратной связи:

Telegram - канал Rentel: @Rentelbusiness

1414
Начать дискуссию