# iOS App 刪除帳號：送審 Apple 前要測的流程

> 刪除按鈕、相關資料、訂閱與重新登入：送交 App Review 前，用一份具體的測試清單檢查這個流程。

原始頁面：[iOS App 刪除帳號：送審 Apple 前要測的流程](https://devoria.fr/zh-hant/blog/ios-app-account-deletion-test-before-apple-review)
作者：[Mehdi Azizi](https://devoria.fr/zh-hant/mehdi-azizi)
發布日期：2026-10-02
內容最後修訂：2026-10-09


## 只有按鈕不夠：要確認哪些東西真的消失了

如果你的 App 可以建立帳號，Apple 要求使用者能在 App 內發起刪除帳號。單純停用帳號不符合這項要求。這個流程要好找，也要說明會造成什麼後果。如果有一部分要在網頁上完成，連結必須直接開到對應的頁面。[來源：Apple 對刪除帳號的說明](https://developer.apple.com/support/offering-account-deletion-in-your-app)。

所以工作不是在設定裡放一顆紅色按鈕就結束了。你要盤點資料、在伺服器端執行刪除、處理錯誤，還要確認使用者接下來看到什麼。這篇指南提供一份產品面和技術面的測試清單；至於依法必須保留的資料，要依照你的業務性質另外處理。

## 先畫一張資料地圖

假設有一個虛構的閱讀筆記 App。它有帳號、個人檔案、私人筆記，以及使用者上傳的書封照片。下面的例子是一份待驗證的計畫，不是已經在 Devoria 某個 App 上執行過的刪除流程。

- **登入身分：** 刪除後要怎麼讓這個帳號無法再使用？
- **個人檔案與筆記：** 哪些資料列屬於這個人？要怎麼刪除？
- **儲存的照片：** 由哪個處理程序移除檔案和它們的參照？
- **手機上的快取：** 畫面是否只在操作真的完成後才清除本機資料？
- **第三方服務：** 跟這個帳號相關的資料，是否需要另外刪除？
- **必須保留的資料：** 哪些資料、依據哪項義務，以及要怎麼告知使用者？

有了這張地圖，你就不會事後才發現使用者資料已經消失了，照片卻還能存取。它也列出了測試時要去搜尋確認的項目。

## 清楚易懂的流程：四種狀態

以下是針對這個虛構 App 的建議，請依你產品的實際後果調整：

1. **帳號設定。** 一直都有一個「刪除我的帳號」的入口。
2. **確認。** 畫面說明會受影響的資料，而且「取消」動作要跟「刪除」動作一樣清楚易懂。
3. **處理中。** 按鈕要防止重複送出，介面要顯示操作正在進行。
4. **結果。** 確認成功後進入登出狀態。失敗時保留有用的訊息和重試的方式，不要假裝帳號已經刪除。

如果處理需要時間，Apple 接受延後完成的流程，前提是要告知使用者，並在完成時確認。只是記錄了刪除請求的時候，App 不能讓人以為刪除已經完成。同一份 [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)。

所以要設計一個伺服器端的處理程序，驗證請求者的身分，以及屬於他的資源。不要依賴手機隨意送來的 ID 來決定要刪哪個帳號。管理員權限要留在伺服器端，參考 [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/zh-hant/blog/ios-app-subscription-vs-one-time-purchase)這篇指南可以幫你把這個流程放回你的商業模式裡思考。

## 在測試 build 上執行的測試清單

只用測試帳號和虛構資料。每項檢查都記下 build、裝置、觀察到的結果和限制。

1. **取消。** 帳號和資料都還能存取。
2. **刪除一個有資料的帳號。** 最終狀態符合事先說明的處理；相關資料確實被移除。
3. **切斷網路。** App 不會顯示假的成功。
4. **部分失敗後重試。** 請求可以完成，而且不會波及其他資料。
5. **開啟第二個工作階段。** 舊的存取權依照預定機制處理。
6. **用同一個 email 重新建立帳號（如果允許）。** 舊的私人資料不會再出現。

把這些情境加進 [Devoria 測試表](https://devoria.fr/zh-hant/resources)。要發給測試者的話，請參考 [TestFlight](https://devoria.fr/zh-hant/blog/testflight-test-iphone-app-before-review) 指南。主控台沒有錯誤訊息，不代表可以省掉檢查資料和流程。

## 準備送交 App Review

在審查備註裡，說明這個動作在哪裡、要怎麼測試。如果某個步驟依賴某項服務，要確保審查期間它可以正常使用。不要用備註承諾送審 build 裡還不存在的功能。

如果已經被指出問題，[App 被 Apple 拒絕](https://devoria.fr/zh-hant/expertise/app-rejected-by-apple)這一頁可以幫你整理回覆。要準備回覆的話，[Apple Review Kit](https://devoria.fr/zh-hant/kits/review-apple) 能幫你找到被引用的規範、它的要求，以及修正和回覆的範例。

如果你在準備第一次送審，[免費診斷](https://devoria.fr/zh-hant/diagnostic)會告訴你還剩哪些事要做，並寄給你我的 Apple 防退件檢查清單，裡面也包含刪除帳號。如果 Apple 已經拒絕你的 App，[跟我預約一小時](https://devoria.fr/zh-hant/coaching)：我們視訊一起看那則訊息。

## 常見問題

### iOS App 一定要提供刪除帳號嗎？

是的，只要你的 App 可以建立帳號：Apple 要求使用者能在 App 內發起刪除帳號。單純停用帳號不符合這項要求。這個流程要好找，也要說明會造成什麼後果。如果有一部分要在網頁上完成，連結必須直接開到對應的頁面。

### 使用者刪除帳號時，要刪掉哪些東西？

所有屬於這個人的東西，不只是他的使用者資料。列一份清單：登入身分、個人檔案和建立的內容、儲存的檔案和它們的參照、手機上的快取、第三方服務裡的資料。也要記下必須保留的資料、依據哪項義務，並告知使用者。沒有這份盤點，使用者資料消失了，照片可能還能存取。

### Apple 接受不是立即完成的刪除帳號嗎？

接受。如果處理需要時間，Apple 接受延後完成的流程，前提是要告知使用者，並在完成時確認。只是記錄了請求的時候，App 不能讓人以為刪除已經完成。失敗時要保留有用的訊息和重試的方式，不要假裝帳號已經刪除。

### 使用者刪除帳號後，訂閱會怎樣？

刪除帳號後，Apple 訂閱可能還會繼續。Apple 要求你說明之後的扣款會怎麼處理，並提供管理訂閱的入口。如果你有用 Sign in with Apple，也要安排適當地撤銷權杖。在測試計畫裡，要把帳號消失、付費權限狀態和訂閱管理分開來看。

### 只在 Supabase Auth 刪除使用者就夠了嗎？

不夠，刪除 Auth 使用者不能證明你產品裡的所有物件都處理好了。根據 Supabase 文件，擁有 Storage 物件的使用者，在這個問題解決之前無法被刪除。刪除使用者也不會立即讓所有已發出的 JWT 失效。要準備一個伺服器端的處理程序來驗證請求者的身分。

### 送交 Apple 前要怎麼測試刪除帳號？

在測試 build 上使用測試帳號和虛構資料。執行六個情境：取消、刪除一個有資料的帳號、切斷網路、部分失敗後重試、開啟第二個工作階段、在允許的情況下用同一個 email 重新建立帳號。要檢查資料和流程：主控台沒有錯誤並不夠。要發布你的 build，請參考 [TestFlight](https://devoria.fr/zh-hant/blog/testflight-test-iphone-app-before-review) 指南。


## 你的專案

[Apple Review Kit](https://devoria.fr/zh-hant/kits/review-apple)：我使用的 App Store 審核檢查清單、我被 Apple 退件後的修正、給審核人員的備註，以及兩個審閱你 App 的 Claude Code skills。29 €。

[iOS Kit](https://devoria.fr/zh-hant/kits/ios)：用 Claude Code 打造你的 iPhone App：我的 App 所用的 Starter Code、檢查成果的 skills，以及 Apple Review Kit、App Store Screenshots Kit 與 ASO Kit。129.99 €。
