А также зачистки всего связанного с пользователем и созданного им контента.

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

Starting June 30, 2022, apps submitted to the App Store that support account creation must also let users initiate deletion of their account within the app. Deleting an account removes the account from the developer’s records, along with any data associated with the account that the developer isn’t legally required to maintain.

Ниже самые важные тезисы и комментарии информации со страницы о том как нужно предлагать и удалять аккаунт.

  • Пользователь должен легко найти Кнопку удаления профиля. Рекомендуют размещать ее на странице настроек приложения или профиля.

  • Вы должны явно указать что удаление включает в себя и удаление всех связанных данных и действительно сделать это. Дополнительные опции могут быть предложены пользователю, но просто заморозки или отключения аккаунта недостаточно. Подразумевается что можно предложить временное отключение, но добраться до Удаления пользователю все равно должно быть возможно обязательно.

  • Аналогично делаем вывод, что можно просить пользователя заполнить какую-то форму, однако, все поля должны быть необязательными

  • Сама форма запроса удаления может располагаться на сайте, а кнопка быть лишь внешней ссылкой

  • Если удаление происходит вручную, то нужно объяснить пользователю сколько времени это займёт

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

Кроме основных параметров Apple любезно подготовили раздел FAQ:

  • Если у вас сильно зарегулированная сфера (тут почитать про это), то вы можете просить пользователя написать письмо или позвонить на горячую линию. Однако, все остальные должны предоставить очень простой путь без дополнительных действий.

  • Можно просить дополнительной аутентификации при запросе удаления

  • Если у вас аккаунт создаётся с помощью Sign In with Apple, то надо сжигать токен

  • Кнопка инициации удаления должна быть в приложении даже если аккаунт создаётся на сайте, а не в приложении, но в нем используется

  • Обязательно должна быть возможность удалять и гостевые аккаунты, если вы их создаете автоматически, чтобы потом заботливо привязать к какому-то пользовательскому идентификатору

  • Удалять не автоматически можно. Сообщите пользователю сколько это займёт времени и оповестите его когда закончите. Только потом удалите и контакт куда сообщали. Apple также обращают внимание, что удаление должно по оперативности соответствовать вашим локальным законам о хранение данных

  • Ещё раз обращают внимание, что должна быть возможность запросить удаление ВСЕГО связанного контента - постов, комментариев, оценок и тд.

  • Даже если вы поддерживали возможность удаления аккаунта в странах требующих соответствие GDPR или CCPA, Apple требует давать такое пользователям вне зависимости от их и вашего расположения

  • Если в вашем приложении есть автопродляемая через Apple подписка, обязательно расскажите пользователю как ему не отменить и дайте нужную ссылку. Альтернатива - предложить удаление аккаунта в момент окончания текущего периода подписки. То есть это можно предложить, но «удалить прямо сейчас» возможность все же должна быть.

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

Всем успешных релизов!

Комментарии (26)


  1. achekalin
    28.05.2022 09:14
    +2

    Глядя на российские компании (про западные меньше скажу) - просьба что-то удалить обычно означает «пометить аккаунт как неактивный/удаленный», но в итоге данные или их части в базах остаются.

    Вопрос один - как юзеру (или Apple) проверить, было ли удаление вообще? Ок, через полторы версии и Google то же самое потребует для приложений в Play Market, и вопрос с новой силой всплывет.

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


    1. K0styan
      28.05.2022 12:02
      +9

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

      Поэтому мы действительно пошли не по пути удаления, а по пути полной анонимизации записей. Настоящие имена и контакты заполняются болванками или нулями.

      Восстановить, что вот этот ex-user_12345 был Васей Пупкиным можно разве что по логам (пока они живы). Снаружи - никак.


      1. axtrace
        29.05.2022 00:48
        +1

        Каждый раз при упоминании анонимизированных данных вспоминаю про этот случай:

        В 2013 году Энтони Токар, на тот момент магистрант Северо- Западного университета и стажер в компании под названием Neustar, из любопытства стал просматривать анонимные метаданные, выложенные в открытый доступ компанией NYC Taxi and Limousine Commission. В этих данных были указаны каждая поездка на машине из автопарка компании за последние годы, а также номер каждой машины, время начала и завершения поездки, адреса, стоимость и чаевые, а также права и номер

        лицензии таксиста (в хешированном виде).204 Сами по себе эти данные не представляют особого интереса. К сожалению, в данном случае хеш-

        функция довольно легко поддается обратному преобразованию.205
        Однако если объединить открытую базу данных с другими базами, пазл начинает складываться. В данном случае Токар сумел определить, в каких точках Нью-Йорка садились в такси некоторые знаменитости,

        например, Брэдли Купер и Джессика Альба. Как ему это удалось?
        У него уже были геолокационные данные, поэтому Токар знал, откуда и куда таксисты перевозили пассажиров, но ему необходимо было

        выяснить, кто находился в этих машинах.206 Поэтому он сопоставил данные, предоставленные компанией New York Taxi and Limousine Commission, с выложенными в Интернет фотографиями из таблоидов. С базой данных папарацци.

        Слышал в разных местах. Конкретную цитату взял из книги Митника "Искусство быть невидимым"


        1. K0styan
          30.05.2022 11:48
          +1

          Очень хороший пример, без шуток.

          Заметьте, весь клубок раскрутился из-за доступа к исходно деанонимизированной базе. Причём базе не очень массовой (только знаменитости) и собранной вручную - папарацци физически присутствовали в одной локации со знаменитостью, сама локация и дата-время тоже не произвольные.

          Штука позволяет очень много всего, но не масштабируется легко.

          И это на самом деле как раз очерчивает верхнюю границу применимости анонимизации данных. Она годится, чтобы не позволить массово вычислить настоящие личности, но не спасёт от целенаправленного исследования по конкретному человеку (только обогатит уже собранные где-то ещё данные).


    1. JavaFox
      28.05.2022 21:37

      Тут больше все работает на доверии и рабочей правовой системе. Разработчики могут не удалить, но всегда может случится слив базы данных (по вине хакеров или неравнодушных работников данной компании) и тогда фирму закидают исками. Так что проще реально удалить или надеяться, что никто никогда не узнает про ваши грязные делишки :)


  1. MFilonen2
    28.05.2022 09:32

    Все-таки хоть Apple можно за тысячу вещей ненавидеть, но вот ее движения в области приватности и построения более-менее цивилизованного рынка ПО заслуживают уважения.


    1. GDragon
      28.05.2022 10:23
      +9

      К сожалению позиция Apple такая же как и у Google, "То что позволено Юпитеру, не позволено быку."


      1. NikaLapka
        29.05.2022 00:36
        +1

        У Apple, в отличие от Google, для запуска стандартного приложения Камера, не требуется доступ к Телефон, иначе вообще никак не запустить.


        1. Kazehay
          30.05.2022 10:18
          +1

          Странно. Отключил доступ к телефону - и нормально работает. Возможно, дело именно в прошивке, но тут претензии к конкретному вендору а не платформе в целом.

          Realme 3, Android 10


    1. Aelliari
      28.05.2022 10:45
      +10

      Ты это скажи анализу картинок на устройствах. Оно мне как то даже картинку в чате телеграма заблюрило


      1. nochkin
        29.05.2022 02:21
        +1

        Сам телеграм вроде может блюрить, но зачем это делать Apple?


        1. Aelliari
          29.05.2022 06:00
          +1

          Картинка не блюрилась на андроиде, а тут с выходом ios15 вроде как детект csam обещали. Как раз на устройствах. При этом соседняя картинка - не была заблюрена


    1. tyderh
      29.05.2022 00:51
      +1

      Достижении в области приватности компании, которая фактически уничтожила приватность в своей индустрии?

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


  1. Sazonov
    28.05.2022 11:11
    +3

    А что делать приложениям для корпоративного сектора? Получается что если я через мобилку комментирую какой-либо тикет с багом, то приложение должно дать мне возможность удалить корпоративный аккаунт и оставленные с него комментарии?


    1. Kazzman
      28.05.2022 11:44
      +2

      Ну, что, кнопка "уволиться".


    1. Belidor
      28.05.2022 12:34

      "Приложения для корпоративного сектора" не устанавливаются через AppStore.


      1. Sazonov
        28.05.2022 13:01

        Slack?


        1. nochkin
          29.05.2022 02:23

          Там и аккаунты не они хранят, а сама корпорация. Удаление в Slack'е ничего толком не сделает.


          1. Sazonov
            29.05.2022 03:30

            Не совсем вас понял, кто «не они?»

            Спрашиваю, потому что как раз делаю один pet project, где функциональность удаления всего контента просто сломает всю бизнес идею. Учётки у меня свои. Есть «гостевые», которые практически без функционала, а есть «верифицированные», для которых критично иметь историю действий.


            1. nochkin
              29.05.2022 04:28

              "Они" -- это Slack. Я так понимаю, что Slack авторизирует существующие корп аккаунты через SSO, а не создаёт и хранит аккаунты сам. Возможно, не прав.

              По поводу истории, то GDPR советует деанонимировать этих пользователей с сохранением истории.


  1. KivApple
    28.05.2022 13:09
    +6

    Возникает три вопроса:

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

    • Аккаунты сотрудников. Например, курьеров, таксистов и т. д. Опять же, тут и отчётность в налоговую, и безопасность (например, чтобы курьер уволенный за воровство заказов или таксист за домогательства к пассажиркам не смог пересоздать аккаунт, а HR всегда видели, что он уже работал в этой компании и за что был уволен). Также это касается разработчиков. Например, фирма может держать код на GitHub. Для GitHub есть клиент. Но разработчик не должен иметь возможность удалить все свои коммиты и комментарии в баг-трекере, так как это сломает работу фирмы (и, в общем-то, закон тут на стороне фирмы, так как в любом трудовом договоре прописывается передача интеллектуальных прав сотрудника).

    • Переписки пользователей. Вот мы общались с Саней, а потом он удалил аккаунт. А между тем он там просил меня одолжить сотку, которую теперь не возвращает, и мне нужен нотариально заверенный скриншот для суда. Или просто его носом ткнуть в сообщения при встрече. Многие соцсети и мессенджеры не позволяют удалять сообщения или как минимум ограничивают эту возможность во времени. Их всех заставят реализовать функционал как в Telegram?


    1. rehci
      28.05.2022 16:08
      +1

      Вот мы общались с Саней, а потом он удалил аккаунт. А между тем он там
      просил меня одолжить сотку, которую теперь не возвращает, и мне нужен
      нотариально заверенный скриншот для суда. Или просто его носом ткнуть в
      сообщения при встрече. Многие соцсети и мессенджеры не позволяют удалять
      сообщения или как минимум ограничивают эту возможность во времени. Их
      всех заставят реализовать функционал как в Telegram?

      Но ведь в Телеге можно просто удалить чат и все сообщения у другого пользователя удалятся. Даже и не знаю как относиться к такой фиче, потому что самому, в случае чего, хотелось бы почистить сообщения, с другой стороны, очень сильно подгорает, когда удаляют чат с тобой :)


      1. KivApple
        28.05.2022 16:09

        Да, фича неоднозначная. И во многих других мессенджерах возможности удалять сообщения нет или она ограничена во времени после отправки. Вопрос в том как это соотносится с требованием Apple о возможности удаления аккаунта.


    1. nochkin
      29.05.2022 02:24

      GDPR раскрывает тему на эти вопросы.


    1. i2gor
      30.05.2022 14:29

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


  1. JohnMark
    30.05.2022 14:32

    А что значит «сжечь токен»? В смысле если была авторизация через appleID, то мы получали токен и записывали в keychain. Получается для того сжечь этот токен, нужно:

    1) прочитать его из KeyChain’a

    2) отправить запрос с ним в ‘appleid.apple…./revoke’

    3) и если запрос был успешным: удалить токен из кейчна

    А в какой именно момент удалять? После того как аккаунт был удален на сервере?