Guideline 2.1 被拒怎麼辦:App Store 修正
作者:Mehdi Azizi
更新於 ,9 分鐘
2.1 要求 App 完整:不能閃退、無失效連結、要附示範帳號、App 內購買要能用。附 3 次真實被拒案例。
Guideline 2.1 是讓最多送審被打回的規則。Apple 自己在 App Review 頁面上寫得很清楚:平均來說,超過 40% 的未解決問題都跟 2.1 有關,這條規則涵蓋閃退、暫時性內容和資訊不完整。
這篇只講這一條規則:它涵蓋哪些情況、兩種不同的版本、審核員怎麼測試你的 App、該怎麼回覆,再加上我自己的 App 被拒過的三次案例。如果你想看所有被拒原因的總覽,請改讀為什麼 Apple 會拒絕你的 App。
什麼是 Guideline 2.1 App Completeness?
Guideline 2.1 要求送給 Apple 的 App 必須是完整的正式版本:不能閃退、不能有失效連結、不能有暫時性文字;App 需要登入的話要提供示範帳號;App 內購買要看得到、也要能正常運作。只要審核員沒辦法把你的 App 從頭走到尾,就會被以 2.1 拒絕。
官方條文在 App Review Guidelines 第 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 個錯誤。
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 支援頁面也將其列為 2016 年 6 月 1 日起所有送審 App 的要求。風險來自寫死在程式裡的 IPv4 位址:Apple 建議在純 IPv6 網路上測試,並關閉行動數據。
要在送出前重現這些條件,最簡單的還是用 TestFlight 在多台裝置上測:請看 TestFlight:測試你的 iPhone App。
我被拒的三次經驗,以及真正的原因
我自己的 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」,和 Apple 的對話會在你 App 的 App Review 區塊進行,也就是大家還在叫的 Resolution Center。官方的回覆 App Review 流程允許最多 4,000 個字元的訊息,可附一個附件。
用英文寫,簡潔就好。審核員想知道三件事:哪裡卡住、改了什麼、怎麼驗證。這是我用的範本(把 build 號碼和修正內容換成你自己的):
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 審核要多久。
如果讀完之後還是搞不清楚被拒的原因,完整的處理流程在 App 被 Apple 拒絕頁面。
審核備註與示範帳號
App Store Connect 裡版本頁面的 App Review Information 區塊,是你對抗 2.1 最好的防線。根據這些欄位的官方說明,它包含:
- Sign-in required:示範帳號的帳號和密碼。這個帳號不能過期。如果你的 App 使用第三方登入,請提供該服務的登入資訊。
- Notes:最多 4,000 位元組,語言不限。任何有助於測試的資訊都寫進去。
- Contact:姓名、電子郵件,以及國際格式的電話號碼。
我每次都會寫進備註的內容:
- 每個 App 內購買的路徑,這是規則 2.1(b) 的要求。
- 不明顯的功能:某個手勢、某個權限、跟時間有關的內容。
- 示範帳號的狀態:有沒有訂閱、資料是預先填好的還是空白的。
- 已知的限制:遇到難以重現的硬體或環境,Apple 會要求你準備好提供影片。
還有一條表單以外的規則:整個審核期間都要讓伺服器保持運作。 測試伺服器一關,示範帳號就不能用,結果就是 2.1 被拒。
送審前的 2.1 檢查清單
這是我每次送出前都會跑一遍的清單,根據我被拒的經驗整理而成:
- 在支援的最小 iPhone、最大 iPhone,以及相容模式下的 iPad 上,從零安裝 App
- 完整走過新手引導,並在每個需要表現的步驟故意失敗
- 每個必經畫面都有無條件的出口
- 沒有任何要給審核看的修正只透過遠端更新提供
- 在飛航模式下啟動 App,再到純 IPv6 網路上測試
- 送出當天打開每個填寫的 URL:隱私權政策、使用條款、支援頁面
- 沒有任何暫時性文字、空白畫面或看得到的測試資料
- 送出當天測試過示範帳號,沒有到期日,伺服器保持運作
- 每個 App 內購買都能從 App 裡找到,並在沙盒環境測試過,包括恢復購買
- 審核備註寫清楚購買項目和不明顯功能的位置
如果這是你第一次上架,前面所有步驟都在在 App Store 上架 App。
跟已經被這樣拒絕過的人一起準備送審資料
Apple Review Kit 收錄了我的送審前檢查清單、給審核員的備註範本,以及能在你送審前檢查專案的 Claude Code skills。
你剛收到 2.1 被拒?這個 Kit 也能幫你找到被引用的規則、它的要求,以及修正和回覆的範例。如果你想現在就一起看你的送審資料,預約和我一對一視訊一小時。
沒有人能保證 Apple 一定會通過你的 App。我能做的,是幫你避開那些我已經付出一輪審核代價才學到的 2.1 被拒。
你還沒送出 App?免費診斷會寄給你我的 Apple 防拒檢查清單(包含規則 2.1),並告訴你送出前還有哪些事要做。如果你還在開發階段,首頁會說明如何從一開始就考慮審核來開發手機 App。
常見問題
「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 那次,真正的原因在線上而不在程式碼裡:審核員能打開的東西,你都要檢查一遍。