# Guideline 2.1 被拒怎麼辦：App Store 修正

> 2.1 要求 App 完整：不能閃退、無失效連結、要附示範帳號、App 內購買要能用。附 3 次真實被拒案例。

原始頁面：[Guideline 2.1 被拒怎麼辦：App Store 修正](https://devoria.fr/zh-hant/blog/app-store-guideline-2-1-rejection-fix)
作者：[Mehdi Azizi](https://devoria.fr/zh-hant/mehdi-azizi)
發布日期：2026-09-23
內容最後修訂：2026-10-09


Guideline 2.1 是讓最多送審被打回的規則。Apple 自己在 [App Review 頁面](https://developer.apple.com/distribute/app-review/)上寫得很清楚：平均來說，超過 40% 的未解決問題都跟 2.1 有關，這條規則涵蓋閃退、暫時性內容和資訊不完整。

這篇只講這一條規則：它涵蓋哪些情況、兩種不同的版本、審核員怎麼測試你的 App、該怎麼回覆，再加上我自己的 App 被拒過的三次案例。如果你想看所有被拒原因的總覽，請改讀[為什麼 Apple 會拒絕你的 App](https://devoria.fr/zh-hant/blog/apple-app-rejection-reasons-real-cases)。

## 什麼是 Guideline 2.1 App Completeness？

Guideline 2.1 要求送給 Apple 的 App 必須是完整的正式版本：不能閃退、不能有失效連結、不能有暫時性文字；App 需要登入的話要提供示範帳號；App 內購買要看得到、也要能正常運作。只要審核員沒辦法把你的 App 從頭走到尾，就會被以 2.1 拒絕。

官方條文在 [App Review Guidelines](https://developer.apple.com/app-store/review/guidelines/#2.1) 第 2 節「Performance」。它分成兩小項。

**2.1(a)** 要求每次送審都是正式版本，附上完整的中繼資料，而且 URL 都要能用。暫時性文字、空白網站和任何臨時內容，都必須在送出前移除。App 必須在實機上測試過錯誤和穩定性。如果需要登入，你要提供示範帳號，並讓伺服器保持運作。內建的示範模式可以取代這個帳號，但必須事先取得 Apple 同意，而且要展示 App 的所有功能。一句話總結全部：「We will reject incomplete app bundles and binaries that crash」。

**2.1(b)** 針對 App 內購買：它們必須完整、是最新狀態、審核員看得到，而且能正常運作。如果某個在 App Store Connect 設定好的購買項目在 App 裡找不到，你必須在審核備註裡說明原因。

## Guideline 2.1 實際上涵蓋哪些情況

實務上，2.1 被拒通常是以下其中一個原因：

- **閃退。** 啟動時、拒絕權限之後、沒有網路時。只要一次就夠了。
- **失效連結。** 隱私權政策、使用條款、支援頁面：你填的每個 URL 都會被打開。
- **無法使用的功能。** 按了沒反應的按鈕、過不去的必經畫面、沒有出口的新手引導。最陰險的一種：在你自己的手機上完全看不出來。
- **示範帳號缺少或過期。** 審核員卡在登入畫面，或你提供的帳號已經不能用，或伺服器被關掉了。
- **填充內容。** Lorem ipsum、「即將推出」、空白畫面、看得到的測試資料。
- **找不到 App 內購買。** 訂閱已經建在 App Store Connect 裡，但審核員找不到販售它的畫面，或在沙盒環境購買失敗。最常見的付費畫面錯誤，整理在 [iOS 付費牆：新手常犯的 7 個錯誤](https://devoria.fr/zh-hant/blog/ios-paywall-beginner-mistakes)。

## 2.1 Information Needed 和 2.1(a) 差在哪？

Apple 的訊息標題不全都一樣，而這個差別會改變你的回覆方式。

**「Guideline 2.1 - Information Needed」** 代表審核員沒辦法完成審核，所以向你提問。可能少了帳號密碼、少了說明，或少了進入某個功能的方法。這還不是確認有 bug：這是一個詢問。有時候在 App Store Connect 精準回覆就夠了。但如果這個問題暴露出 App 真的卡住，就需要新的 build。

**「Guideline 2.1(a) - Performance - App Completeness」** 代表審核員確實發現了問題：閃退、bug、沒反應的畫面。訊息通常會寫出使用的裝置，也常附上截圖。這時候就必須修正、重新送 build，然後再回覆。

## Apple 怎麼測試你的 App

站在審核員的角度想想。有三點很重要。

**他用的裝置你可能沒有。** 被拒訊息常會寫出機型。規則 2.4.1 指出，iPhone App 應盡可能也能在 iPad 上執行，而為 iPhone 設計的 App 會以相容模式顯示，也就是 iPhone 比例的視窗。我最近幾次 2.1 被拒都來自 iPad Air：如果你只在自己的 iPhone 上測試，就看不到審核員看到的畫面。

**他從第一次啟動開始。** 全新安裝的 App，沒有快取、沒有登入狀態、沒有下載過任何更新。

**網路必須在純 IPv6 環境下運作。** 規則 2.5.5 和講背景模式的 Guideline 2.5.4 是鄰居，它要求 App 在純 IPv6 網路上完整運作；[Apple 的 IPv6 支援頁面](https://developer.apple.com/support/ipv6/)也將其列為 2016 年 6 月 1 日起所有送審 App 的要求。風險來自寫死在程式裡的 IPv4 位址：Apple 建議在純 IPv6 網路上測試，並關閉行動數據。

要在送出前重現這些條件，最簡單的還是用 TestFlight 在多台裝置上測：請看 [TestFlight：測試你的 iPhone App](https://devoria.fr/zh-hant/blog/testflight-test-iphone-app-before-review)。

## 我被拒的三次經驗，以及真正的原因

我自己的 App 最近三次被拒，以及真正的原因。

### Solys：在 iPad 上不可能過關的小遊戲示範

Solys 是我做的小遊戲鬧鐘。2026 年 8 月 18 日，一個 build 以「2.1 Information Needed」被拒：Apple 要求提供通過遊戲任務的方法。審核員用的是 iPad Air，iPhone App 跑在相容模式下。

真正的原因在新手引導裡的小遊戲示範。障礙物高度是用固定的 point 寫死的。在 iPad 相容模式可用的卡片高度下，通道變得比角色還窄：示範根本不可能過關。而「繼續」按鈕只有在過關時才會亮起。完全沒有出口：審核員看不到 App 的其他部分。

**修正方式**：幾何尺寸改成依卡片實際量到的大小等比例計算，並在失敗後顯示「略過示範」連結。

**學到的教訓**：任何需要表現才能通過的步驟，都必須有無條件的出口。而且每個必經畫面，都要在支援的最小螢幕上測試，也要在 iPad 相容模式下測試。

### Nolera：審核員看不到的修正

2026 年 9 月 17 日，Nolera 在 iPad Air 上審核後被拒。訊息同時包含 2.1(a) 和其他幾點。被指出的問題，我是用遠端更新（OTA）修正的，沒有出新的 build。

問題在於：第一次啟動時，審核員看到的是 build 裡內建的程式碼，而不是之後才下載的更新。對他來說，這個修正根本不存在。

**學到的教訓**：要給審核看的修正，必須包含在送給 Apple 的二進位檔裡。

### Clic：原因不在 App 裡

2026 年 9 月 16 日，Clic 被拒。App 本身是最新的。真正的原因在別處：線上發布的隱私權政策，沒有更新所使用的 AI 服務供應商。這次被拒比較算是隱私問題而不是 2.1，但它說明了同一件事：真正的原因不一定是訊息讓你以為的那個。

**學到的教訓**：檢查線上的內容，而不是你 repo 裡的內容。送出當天，把每個填寫的 URL 都打開看看。

## 在 Resolution Center 該怎麼回覆

被拒之後，你的送審狀態會變成[「Unresolved Issues」](https://devoria.fr/zh-hant/blog/app-store-connect-waiting-for-review-statuses)，和 Apple 的對話會在你 App 的 App Review 區塊進行，也就是大家還在叫的 Resolution Center。官方的[回覆 App Review](https://developer.apple.com/help/app-store-connect/manage-submissions-to-app-review/reply-to-app-review-messages/) 流程允許最多 4,000 個字元的訊息，可附一個附件。

用英文寫，簡潔就好。審核員想知道三件事：哪裡卡住、改了什麼、怎麼驗證。這是我用的範本（把 build 號碼和修正內容換成你自己的）：

```text
Hello,

Thank you for your review.

Issue: the onboarding game demo could not be completed on iPad
(iPhone app running in compatibility mode), so the user could
not continue.

Fix in build 1.0.3 (42):
- The game layout now scales to the measured screen size.
- A "Skip demo" link appears after a failed attempt, so the
  onboarding can always be completed.

How to verify: launch the app, start the onboarding demo,
lose once, then tap "Skip demo".

A screen recording is attached.

Best regards,
```

幾個原則：

- **回答對方問的問題。** 遇到「Information Needed」，先給出明確答案，不要先講背景。
- **寫出 build 號碼並提供路徑**，三到四個操作就能到達修正過的畫面。
- **附上證據。** 一段在接近審核員裝置上錄的短影片，可以省掉一次來回。
- **不要辯解。** 確實可以向 App Review Board 上訴，但如果 2.1 被拒是你該被拒，上訴只會拉長等待時間。各階段時間的細節在 [App Store 審核要多久](https://devoria.fr/zh-hant/blog/app-store-review-time)。

如果讀完之後還是搞不清楚被拒的原因，完整的處理流程在 [App 被 Apple 拒絕](https://devoria.fr/zh-hant/expertise/app-rejected-by-apple)頁面。

## 審核備註與示範帳號

App Store Connect 裡版本頁面的 App Review Information 區塊，是你對抗 2.1 最好的防線。根據[這些欄位的官方說明](https://developer.apple.com/help/app-store-connect/reference/app-review-information/)，它包含：

- **Sign-in required**：示範帳號的帳號和密碼。這個帳號不能過期。如果你的 App 使用第三方登入，請提供該服務的登入資訊。
- **Notes**：最多 4,000 位元組，語言不限。任何有助於測試的資訊都寫進去。
- **Contact**：姓名、電子郵件，以及國際格式的電話號碼。

我每次都會寫進備註的內容：

1. **每個 App 內購買的路徑**，這是規則 2.1(b) 的要求。
2. **不明顯的功能**：某個手勢、某個權限、跟時間有關的內容。
3. **示範帳號的狀態**：有沒有訂閱、資料是預先填好的還是空白的。
4. **已知的限制**：遇到難以重現的硬體或環境，Apple 會要求你準備好提供影片。

還有一條表單以外的規則：**整個審核期間都要讓伺服器保持運作。** 測試伺服器一關，示範帳號就不能用，結果就是 2.1 被拒。

## 送審前的 2.1 檢查清單

這是我每次送出前都會跑一遍的清單，根據我被拒的經驗整理而成：

- 在支援的最小 iPhone、最大 iPhone，以及相容模式下的 iPad 上，從零安裝 App
- 完整走過新手引導，並在每個需要表現的步驟故意失敗
- 每個必經畫面都有無條件的出口
- 沒有任何要給審核看的修正只透過遠端更新提供
- 在飛航模式下啟動 App，再到純 IPv6 網路上測試
- 送出當天打開每個填寫的 URL：隱私權政策、使用條款、支援頁面
- 沒有任何暫時性文字、空白畫面或看得到的測試資料
- 送出當天測試過示範帳號，沒有到期日，伺服器保持運作
- 每個 App 內購買都能從 App 裡找到，並在沙盒環境測試過，包括恢復購買
- 審核備註寫清楚購買項目和不明顯功能的位置

如果這是你第一次上架，前面所有步驟都在[在 App Store 上架 App](https://devoria.fr/zh-hant/expertise/publish-app-on-app-store)。

## 跟已經被這樣拒絕過的人一起準備送審資料

[Apple Review Kit](https://devoria.fr/zh-hant/kits/review-apple) 收錄了我的送審前檢查清單、給審核員的備註範本，以及能在你送審前檢查專案的 Claude Code skills。

你剛收到 2.1 被拒？這個 Kit 也能幫你找到被引用的規則、它的要求，以及修正和回覆的範例。如果你想現在就一起看你的送審資料，[預約和我一對一視訊一小時](https://devoria.fr/zh-hant/coaching)。

沒有人能保證 Apple 一定會通過你的 App。我能做的，是幫你避開那些我已經付出一輪審核代價才學到的 2.1 被拒。

你還沒送出 App？[免費診斷](https://devoria.fr/zh-hant/diagnostic)會寄給你我的 Apple 防拒檢查清單（包含規則 2.1），並告訴你送出前還有哪些事要做。如果你還在開發階段，首頁會說明如何從一開始就考慮審核來[開發手機 App](https://devoria.fr/zh-hant)。

## 常見問題

### 「Guideline 2.1 - Information Needed」是什麼意思？

審核員沒辦法完成審核，所以向你提問：帳號密碼、說明，或進入某個功能的方法。在 App Store Connect 精準回覆。如果問題暴露出 App 真的卡住，就像 Solys 那次，就修正它並送出新的 build。

### 2.1 被拒後需要新的 build 嗎？

如果是閃退、bug 或卡住的畫面，需要：修正必須包含在二進位檔裡。遠端更新不夠，因為審核員第一次啟動時看到的是內建的程式碼。如果只是缺少資訊，回覆可能就夠了。

### 我的 App 需要登入：該提供什麼給審核員？

一個不會過期的示範帳號，填在 App Review Information 區塊，並在整個審核期間讓伺服器保持運作。內建示範模式只有在事先取得 Apple 同意時才能取代這個帳號，而且必須展示所有功能。

### 2.1 被拒有可能是 App 以外的原因嗎？

有可能。App 頁面上一個失效的 URL、過期的示範帳號、關掉的伺服器，或設定錯誤的 App 內購買，都足以造成被拒。有時候，就像 Clic 那次，真正的原因在線上而不在程式碼裡：審核員能打開的東西，你都要檢查一遍。


## 你的專案

[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 €。
