# iOS 앱 계정 삭제: Apple 심사 전에 테스트할 흐름

> 삭제 버튼, 연결된 데이터, 구독, 재로그인까지. App Review에 제출하기 전에 계정 삭제 흐름을 점검하는 구체적인 테스트 방법이에요.

원본 페이지: [iOS 앱 계정 삭제: Apple 심사 전에 테스트할 흐름](https://devoria.fr/ko/blog/ios-app-account-deletion-test-before-apple-review)
작성자: [Mehdi Azizi](https://devoria.fr/ko/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)에 자세히 나와 있어요.

그러니 테스트 계획에서 계정 삭제, 유료 접근 상태, 구독 관리를 따로 나눠 두세요. [구독 vs 일회성 구매](https://devoria.fr/ko/blog/ios-app-subscription-vs-one-time-purchase) 가이드를 보면 이 흐름을 여러분의 수익 모델 안에서 정리하는 데 도움이 돼요.

## 테스트 빌드에서 실행할 테스트

테스트 계정과 가상의 데이터만 사용하세요. 각 확인마다 빌드, 기기, 관찰한 결과, 한계를 기록해요.

1. **취소하기.** 계정과 데이터에 계속 접근할 수 있어요.
2. **데이터가 채워진 계정 삭제하기.** 최종 상태가 안내한 처리와 일치하고, 해당 데이터가 실제로 제거돼요.
3. **네트워크 끊기.** 앱이 가짜 성공을 보여 주지 않아요.
4. **부분 실패 후 다시 시도하기.** 다른 데이터를 건드리지 않고 요청이 완료될 수 있어요.
5. **두 번째 세션 열기.** 기존 접근 권한이 설계한 방식대로 처리돼요.
6. **허용된다면 같은 주소로 계정 다시 만들기.** 예전 비공개 데이터가 다시 나타나지 않아요.

이 케이스들을 [Devoria 테스트 체크표](https://devoria.fr/ko/resources)에 추가하세요. 테스터에게 배포하려면 [TestFlight](https://devoria.fr/ko/blog/testflight-iphone-app-beta-testing) 가이드를 따라 하세요. 콘솔에 오류 메시지가 없다고 해서 데이터와 흐름을 확인한 것을 대신할 수는 없어요.

## App Review 제출 준비하기

심사 메모에 삭제 동작이 어디에 있고 어떻게 테스트하는지 설명하세요. 어떤 단계가 외부 서비스에 의존한다면, 심사 기간 동안 그 서비스가 동작하는지 확인하세요. 제출한 빌드에 아직 없는 기능을 메모로 약속하지 마세요.

이미 문제가 지적됐다면 [Apple에 앱이 거절됐을 때](https://devoria.fr/ko/expertise/app-rejected-by-apple) 페이지가 답변을 정리하는 데 도움이 돼요. 답변을 준비할 때는 [Apple Review Kit](https://devoria.fr/ko/kits/review-apple)로 인용된 규정, 그 규정이 요구하는 내용, 수정과 답변 예시를 찾을 수 있어요.

첫 제출을 준비 중이라면 [무료 진단](https://devoria.fr/ko/diagnostic)이 남은 할 일을 알려 주고, 계정 삭제까지 포함된 제 Apple 거절 방지 체크리스트를 보내 드려요. Apple에 이미 앱이 거절됐다면 [저와 1시간 상담을 예약하세요](https://devoria.fr/ko/coaching). 화상으로 함께 메시지를 읽어 봐요.

## 자주 묻는 질문

### iOS 앱에서 계정 삭제 기능은 필수인가요?

네, 앱에서 계정을 만들 수 있다면요. Apple은 사용자가 앱 안에서 계정 삭제를 시작할 수 있어야 한다고 요구해요. 단순한 비활성화로는 이 요건을 충족하지 못해요. 흐름은 쉽게 찾을 수 있어야 하고 결과를 설명해야 해요. 일부 과정이 웹에서 끝난다면 링크는 해당 페이지로 바로 연결되어야 해요.

### 사용자가 계정을 삭제하면 무엇을 지워야 하나요?

사용자 정보만이 아니라 그 사람에게 속한 모든 것이에요. 목록을 만드세요: 로그인 정보, 프로필과 작성한 콘텐츠, 저장된 파일과 그 참조, 기기 캐시, 서드파티 서비스의 데이터. 보관해야 하는 데이터와 그 이유가 되는 의무도 적고, 사용자에게 알리세요. 이 목록이 없으면 사용자 정보는 사라졌는데 사진은 여전히 접근 가능한 상태로 남을 수 있어요.

### Apple은 즉시 처리되지 않는 계정 삭제도 허용하나요?

네. 처리에 시간이 걸린다면, Apple은 사용자에게 알리고 완료를 확인해 주는 조건으로 지연 처리 흐름을 허용해요. 요청만 기록된 상태에서 삭제가 끝난 것처럼 보여서는 안 돼요. 실패하면 계정이 사라졌다고 주장하지 말고, 도움이 되는 메시지와 다시 시도할 방법을 남겨 두세요.

### 사용자가 계정을 삭제하면 구독은 어떻게 되나요?

계정을 삭제한 뒤에도 Apple 구독은 계속될 수 있어요. Apple은 결제가 어떻게 되는지 설명하고 구독 관리에 접근할 수 있게 하라고 요구해요. Sign in with Apple을 사용한다면 토큰을 적절히 폐기하는 처리도 준비하세요. 테스트 계획에서 계정 삭제, 유료 접근 상태, 구독 관리를 나눠 두세요.

### Supabase Auth에서 사용자만 삭제하면 충분한가요?

아니요. Auth 사용자를 삭제했다고 제품의 모든 객체가 처리됐다는 증거가 되지는 않아요. Supabase 문서에 따르면 Storage 객체를 소유한 사용자는 그 문제가 해결될 때까지 삭제할 수 없어요. 사용자를 삭제해도 이미 발급된 모든 JWT가 즉시 무효화되지도 않아요. 요청자의 신원을 확인하는 서버 측 처리를 준비하세요.

### Apple에 제출하기 전에 계정 삭제를 어떻게 테스트하나요?

테스트 빌드에서 테스트 계정과 가상의 데이터를 사용하세요. 여섯 가지 케이스를 실행해요: 취소하기, 데이터가 채워진 계정 삭제하기, 네트워크 끊기, 부분 실패 후 다시 시도하기, 두 번째 세션 열기, 허용된다면 같은 주소로 계정 다시 만들기. 데이터와 흐름을 확인하세요. 콘솔에 오류가 없다는 것만으로는 부족해요. 빌드를 배포하려면 [TestFlight](https://devoria.fr/ko/blog/testflight-iphone-app-beta-testing) 가이드를 따라 하세요.


## 내 프로젝트

[Apple Review Kit](https://devoria.fr/ko/kits/review-apple): 제가 쓰는 App Store 심사 체크리스트, 수정한 Apple 리젝 사례, 심사자용 메모, 앱을 검토하는 Claude Code skill 두 개. 29 €.

[iOS Kit](https://devoria.fr/ko/kits/ios): Claude Code로 iPhone 앱을 만드세요. 제 앱들의 Starter Code, 작업을 검사하는 skill, Apple Review Kit, App Store Screenshots Kit, ASO Kit 포함. 129,99 €.
