# Удаление аккаунта в iOS-приложении: что проверить до Apple

> Кнопка удаления, связанные данные, подписка и повторный вход: конкретный чек-лист, чтобы проверить этот сценарий до отправки в App Review.

Оригинальная страница: [Удаление аккаунта в iOS-приложении: что проверить до Apple](https://devoria.fr/ru/blog/udalenie-akkaunta-ios-prilozhenie-app-review)
Автор: [Mehdi Azizi](https://devoria.fr/ru/mehdi-azizi)
Опубликовано: 2026-10-02
Последняя правка контента: 2026-10-09


## Одной кнопки мало: нужно проверить, что именно исчезает

Если в твоём приложении можно создать аккаунт, Apple требует, чтобы человек мог запустить его удаление прямо из приложения. Простая деактивация это требование не выполняет. Сценарий должен легко находиться и объяснять последствия. Если часть процесса завершается в вебе, ссылка должна вести прямо на нужную страницу. [Источник: удаление аккаунта по версии Apple](https://developer.apple.com/support/offering-account-deletion-in-your-app).

Так что работа не заканчивается красной кнопкой в настройках. Нужно составить список данных, выполнить удаление на сервере, обработать ошибки и проверить, что пользователь видит потом. В этом гайде я предлагаю продуктовый и технический чек-лист. Данные, которые ты обязан хранить по закону, требуют обработки с учётом твоей деятельности.

## Начни с карты данных

Возьмём выдуманное приложение-дневник чтения. В нём есть аккаунт, профиль, личные заметки и фото обложек, которые добавляет пользователь. Пример ниже описывает план для проверки, а не удаление, уже реализованное в каком-то приложении Devoria.

- **Данные для входа:** как сделать аккаунт непригодным после удаления?
- **Профиль и заметки:** какие строки принадлежат этому человеку и как они удаляются?
- **Сохранённые фото:** какой процесс удаляет файлы и ссылки на них?
- **Кэш на телефоне:** стирает ли экран локальные данные, когда операция действительно завершилась?
- **Сторонние сервисы:** нужно ли отдельно удалять данные, связанные с этим аккаунтом?
- **Данные, которые нужно хранить:** какие, по какому обязательству и как об этом сообщается пользователю?

Такая карта спасает от сюрприза, когда фото всё ещё доступно, а запись пользователя уже исчезла. Заодно она даёт тебе список объектов, которые нужно искать в тестах.

## Понятный сценарий в четырёх состояниях

Вот вариант для выдуманного приложения. Адаптируй его под реальные последствия в твоём продукте:

1. **Настройки аккаунта.** Пункт «Удалить аккаунт» всегда доступен.
2. **Подтверждение.** Экран описывает затронутые данные и показывает действие отмены, такое же понятное, как действие удаления.
3. **Обработка.** Кнопка защищает от двойных запросов, а интерфейс показывает, что операция идёт.
4. **Результат.** Подтверждённый успех открывает состояние «не в аккаунте». При ошибке остаётся полезное сообщение и способ повторить попытку, без заявлений, что аккаунт удалён.

Если обработка занимает время, Apple принимает отложенный сценарий при условии, что ты сообщаешь об этом человеку и подтверждаешь завершение. Приложение не должно создавать впечатление, что удаление закончено, когда записан только запрос. В той же [документации Apple](https://developer.apple.com/support/offering-account-deletion-in-your-app) описаны случаи повторной аутентификации и исключения для строго регулируемых сфер.

## Что предусмотреть с Supabase

Удаление пользователя в Auth само по себе не доказывает, что все объекты твоего продукта обработаны. Supabase, в частности, объясняет, что пользователя, которому принадлежат объекты в Storage, нельзя удалить, пока это не решено. В документации также сказано, что удаление пользователя не разлогинивает мгновенно все уже выданные JWT: их срок действия нужно учитывать при проектировании. [Источник: управление пользователями в Supabase](https://supabase.com/docs/guides/auth/managing-user-data).

Поэтому сделай серверную обработку, которая проверяет личность того, кто делает запрос, и принадлежащие ему ресурсы. Не полагайся на идентификатор, который телефон присылает как угодно, чтобы выбрать аккаунт для удаления. Права администратора остаются на сервере, как указано в [документации по ключам Supabase](https://supabase.com/docs/guides/getting-started/api-keys).

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

## Аккаунт и подписка: две отдельные проверки

Человек может удалить аккаунт, а подписка Apple при этом продолжится. Apple требует объяснить, что будет с оплатой, и дать доступ к управлению подпиской. Если используешь Sign in with Apple, предусмотри и правильный отзыв токенов. Подробности в [рекомендациях Apple по удалению](https://developer.apple.com/support/offering-account-deletion-in-your-app).

Поэтому в плане тестирования разделяй исчезновение аккаунта, состояние платного доступа и управление подпиской. Гайд [подписка или разовая покупка](https://devoria.fr/ru/blog/subscription-or-one-time-purchase-ios-app) поможет вписать этот сценарий в твою бизнес-модель.

## Чек-лист для тестовой сборки

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

1. **Отменить.** Аккаунт и данные остаются доступны.
2. **Удалить заполненный аккаунт.** Итоговое состояние соответствует заявленной обработке, затронутые данные действительно удалены.
3. **Отключить сеть.** Приложение не показывает ложный успех.
4. **Повторить после частичной ошибки.** Запрос может завершиться, не задев чужие данные.
5. **Открыть вторую сессию.** Старые доступы обрабатываются согласно предусмотренному механизму.
6. **Создать аккаунт заново с тем же адресом, если это разрешено.** Старые личные данные не появляются снова.

Добавь эти кейсы в [чек-лист тестирования Devoria](https://devoria.fr/ru/resources). Чтобы раздать их тестировщикам, следуй гайду по [TestFlight](https://devoria.fr/ru/blog/testflight-testirovanie-iphone-prilozheniya). Отсутствие ошибок в консоли не заменяет проверку данных и сценария.

## Подготовка к отправке в App Review

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

Страница [приложение отклонено Apple](https://devoria.fr/ru/expertise/app-rejected-by-apple) поможет выстроить ответ, если проблема уже обнаружена. Чтобы его подготовить, [Apple Review Kit](https://devoria.fr/ru/kits/review-apple) поможет найти цитируемое правило, понять, что оно требует, и даст пример исправления и ответа.

Если готовишь первую отправку, [бесплатная диагностика](https://devoria.fr/ru/diagnostic) покажет, что осталось сделать, и пришлёт мой чек-лист против отказов Apple, включая удаление аккаунта. Если Apple уже отклонила твоё приложение, [забронируй час со мной](https://devoria.fr/ru/coaching): разберём сообщение вместе по видеосвязи.

## Частые вопросы

### Обязательно ли удаление аккаунта в iOS-приложении?

Да, если в приложении можно создать аккаунт: Apple требует, чтобы человек мог запустить его удаление из приложения. Простая деактивация это требование не выполняет. Сценарий должен легко находиться и объяснять последствия. Если часть процесса завершается в вебе, ссылка должна вести прямо на нужную страницу.

### Что нужно удалять, когда пользователь удаляет аккаунт?

Всё, что принадлежит человеку, а не только запись пользователя. Составь список: данные для входа, профиль и созданный контент, сохранённые файлы и ссылки на них, кэш на телефоне, данные в сторонних сервисах. Отметь и данные, которые нужно хранить, по какому обязательству, и сообщи об этом человеку. Без такого списка фото может остаться доступным, хотя запись пользователя уже исчезла.

### Принимает ли Apple удаление аккаунта не сразу?

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

### Что происходит с подпиской, когда пользователь удаляет аккаунт?

Подписка Apple может продолжаться после удаления аккаунта. Apple требует объяснить, что будет с оплатой, и дать доступ к управлению подпиской. Если используешь Sign in with Apple, предусмотри и правильный отзыв токенов. В плане тестирования разделяй исчезновение аккаунта, состояние платного доступа и управление подпиской.

### Достаточно ли удалить пользователя в Supabase Auth?

Нет, удаление пользователя в Auth не доказывает, что все объекты твоего продукта обработаны. Согласно документации Supabase, пользователя, которому принадлежат объекты в Storage, нельзя удалить, пока это не решено. И удаление пользователя не разлогинивает мгновенно все уже выданные JWT. Сделай серверную обработку, которая проверяет личность того, кто делает запрос.

### Как протестировать удаление аккаунта перед отправкой в Apple?

Используй тестовый аккаунт и выдуманные данные на тестовой сборке. Прогони шесть кейсов: отмена, удаление заполненного аккаунта, отключение сети, повтор после частичной ошибки, вторая сессия, повторное создание аккаунта с тем же адресом, если это разрешено. Проверяй данные и сценарий: отсутствия ошибок в консоли недостаточно. Чтобы раздать сборку, следуй гайду по [TestFlight](https://devoria.fr/ru/blog/testflight-testirovanie-iphone-prilozheniya).


## Твой проект

[Apple Review Kit](https://devoria.fr/ru/kits/review-apple): Мой чек-лист для ревью App Store, исправленные отказы Apple, заметки для ревьюера и два skills для Claude Code, которые проверяют твоё приложение. 29 €.

[iOS Kit](https://devoria.fr/ru/kits/ios): Создай приложение для iPhone с Claude Code: стартовый код моих приложений, skills для проверки его работы и наборы Apple Review Kit, App Store Screenshots Kit и ASO Kit. 129,99 €.
