審查 App Store 送審準備度與拒絕風險,涵蓋現行審查指南、PrivacyInfo.xcprivacy 與必要原因 API、隱私標籤、ATT、StoreKit 付款、中繼資料、授權、Widget 與 Live Activities。適用於準備送審、回應拒絕、調和隱私證據,或區分上傳阻礙與清理事項。
App Store 審查準備
在送審前找出 App Store 拒絕風險。將政策、SDK、隱私、授權、付款與中繼資料檢查視為當前版本的證據,而非永久事實。
目錄
- 常見拒絕原因與避免方法
- PrivacyInfo.xcprivacy -- 隱私清單要求
- 資料使用、分享與隱私政策(指南 5.1.2)
- 應用程式內購買與 StoreKit 規則(指南 3.1.1)
- HIG 遵循檢查清單
- App 追蹤透明度(ATT)
- 歐盟數位市場法(DMA)考量
- 授權與能力
- 送審流程
- 中繼資料最佳做法
- 申訴流程
- 常見錯誤
- 審查檢查清單
- 參考資料
每次審計開始時,先取得最新的 App Review Guidelines、Upcoming Requirements、螢幕截圖規格、必要原因 API 文件,以及適用的商店/授權付款規則。在每個版本阻礙旁記錄檢查日期與來源。然後封存建置並驗證確切的送審版本,區分阻礙與清理事項,修正一類證據不符,並對重建的封存重新執行相同檢查。
對於關鍵字、螢幕截圖說明、產品頁面中繼資料或中繼資料拒絕風險的提示,請從合規角度回答,並明確將關鍵字研究、排名策略、轉換優化、螢幕截圖順序與 A/B 測試交由 app-store-optimization 處理。將 App Review 中繼資料指引限制在準確性、欄位限制、誤導內容風險與螢幕截圖合規。從 Current Release Requirements 載入日期格式、螢幕截圖與工具鏈事實。
對於完整的送審準備度審計,請將阻礙上傳/審查的問題與一般清理事項分開。交叉檢查隱私清單、App Store 隱私營養標籤、隱私政策、ATT 狀態、執行時期網路行為與 SDK 行為;宣告與實際行為必須一致。
阻礙送審檢查
在一般清理之前,將以下問題升級為阻礙:
- 封存缺少當前 Xcode 或平台 SDK 上傳最低版本
- 未解決的隱私證據不符;請根據 PrivacyInfo.xcprivacy 要求 進行調和
- 付款路徑未通過 StoreKit 規則
- 缺少 App Store Connect 當前規格所需的螢幕截圖組
- 審查存取未通過下方指南 2.1 完整性證據
常見拒絕原因與避免方法
| 指南風險 | 版本證據 |
|---|---|
| 2.1 完整性 | 無佔位符、損壞/空白流程、無法存取的僅硬體功能,或沒有有效示範帳號與審查說明的登入閘道。 |
| 2.3 中繼資料 | 應用程式名稱、類別、說明、關鍵字與螢幕截圖準確代表送審的二進位檔與實際 UI。 |
| 4.2 最低功能 | 應用程式提供有意義的應用程式特定價值,而非簡陋網站或系統行為的瑣碎複製。 |
| 2.5.1 軟體要求 | 封存使用公開 API,且不下載在文件例外之外變更已審查功能的程式碼。 |
根據當前指南與確切封存驗證這些項目;不要從舊版檢查清單沿用版本或螢幕截圖要求。
PrivacyInfo.xcprivacy -- 隱私清單要求
當您的應用程式程式碼、可執行檔、動態函式庫或第三方 SDK 使用 Apple 的必要原因 API 類別,或宣告收集資料/追蹤行為時,需要隱私清單。
請參閱: references/privacy-manifest.md 了解完整結構、原因代碼與檢查清單。
摘要
- 必要原因 API 類別包括檔案時間戳記、系統開機時間、磁碟空間、使用中的鍵盤與 UserDefaults;使用時每個都需要一個核准的原因代碼。
- 在最終送審前,重新檢查 Apple 當前必要原因 API 文件,不要選擇廣泛、方便或自創的原因代碼。
- 必要原因 API 宣告應屬於包含使用該 API 的程式碼的套件;每個包含清單相關程式碼的應用程式目標、可執行檔、動態函式庫、框架或 SDK 套件都需要相符的清單宣告。
- 每個收集資料、使用必要原因 API、啟用資料收集/追蹤或聯絡追蹤網域的 SDK、可執行檔或動態函式庫,都需要在包含該程式碼的套件中進行清單關注;SDK 程式碼不能依賴主應用程式的清單來報告 SDK 自身的使用情況。
- 清單宣告必須與 App Store 隱私營養標籤、SDK 行為以及應用程式的呈現功能相符。
資料使用、分享與隱私政策(指南 5.1.2)
- 必須在 App Store Connect 中設定隱私政策 URL,並且在應用程式內可存取
- 隱私政策必須準確描述您收集的資料、使用方式以及分享對象
- App Store 隱私營養標籤必須與實際資料收集做法相符
- 隱私標籤、隱私清單、SDK 揭露與執行時期行為應講述相同的故事
應用程式內購買與 StoreKit 規則(指南 3.1.1)
數位商品、功能、訂閱、虛擬貨幣、廣告移除與數位小費通常需要 IAP,除非當前指南例外、商店規則或核准的授權適用。實體商品與現實服務使用其一般付款流程。購買前,顯示價格、持續時間、續約/試用條款、計費頻率與取消條款;驗證產品分類、恢復、授權驗證、延遲/中斷購買與 Ask to Buy。載入 storekit 進行實作,並在標記路徑合規前重新檢查當前區域/外部連結規則。
HIG 遵循檢查清單
從 review-checklists.md 載入導覽、模態、Widget、系統功能、啟動畫面與空狀態的完整 HIG 檢查。
App 追蹤透明度(ATT)
何時需要 ATT
如果您的應用程式在其他公司的應用程式或網站間追蹤使用者,您必須:
- 在任何跨應用程式或跨網站追蹤發生之前(包括具追蹤能力的 SDK 行為),透過
ATTrackingManager.requestTrackingAuthorization請求權限 - 尊重使用者的選擇 -- 如果使用者拒絕權限,則停用跨應用程式與跨網站追蹤
- 不要將應用程式功能限制在追蹤同意之後(「接受追蹤否則無法使用此應用程式」會被拒絕)
- 在
NSUserTrackingUsageDescription中提供明確的目的字串,說明追蹤的用途
何時不需要 ATT
如果您不在應用程式或網站間追蹤使用者,請勿顯示 ATT 提示。Apple 會拒絕不必要的 ATT 提示。
ATT 實作
import AppTrackingTransparency
@MainActor
func requestTrackingPermission() async {
let status = await ATTrackingManager.requestTrackingAuthorization()
switch status {
case .authorized:
// 啟用追蹤,初始化含追蹤的廣告 SDK
break
case .denied, .restricted:
// 使用非個人化廣告,並停用跨應用程式/跨網站追蹤
break
case .notDetermined:
// 請求後不應發生,優雅處理
break
@unknown default:
break
}
}
時機: 在應用程式啟動且使用者了解為何請求追蹤後,再請求 ATT 權限。請勿在首次啟動時立即顯示提示,或與其他系統權限提示堆疊。
歐盟數位市場法(DMA)考量
替代發行、瀏覽器引擎、公證與外部付款路徑是區域與授權特定的。重新檢查當前商店規則,並將不支援的路徑視為阻礙。
授權與能力
每個授權都需要一個啟用的功能、適用的特定使用說明,以及相符的封存行為。使用 Entitlements and Usage Descriptions 中的表格與有效的屬性列表範例。
送審流程
送審前步驟
- 在 Xcode 中封存。 Product > Archive(需要 Distribution 簽署身分)。確認封存在 Release 組態下乾淨建置,零警告。
- 上傳至 App Store Connect。 使用 Organizer 視窗(Distribute App > App Store Connect)或
xcodebuild -exportArchive。透過altool或 Transporter 自動上傳也可行。 - TestFlight 內部測試。 建置在處理後幾分鐘內即可供內部測試人員(您的團隊)使用。在至少兩種裝置尺寸上走過每個畫面與流程。
- TestFlight 外部測試。 外部群組在首次外部發行前需要 Beta App Review。在完整送審前使用此功能與真實使用者驗證。
- 提交至 App Review。 在 App Store Connect 中,選擇建置,填寫所有中繼資料欄位,附加螢幕截圖,然後按一下 Submit for Review。審查時間不定;為拒絕、申訴與中繼資料修正預留緩衝。
加速審查請求
僅在 Apple 文件記載的關鍵或時間敏感情況下,使用 App Store Connect 的 Contact Us 表單,以簡潔的事實理由請求加速審查。
階段性發行
使用 Phased Release Schedule 了解推出百分比與 App Store Connect 控制項。
中繼資料最佳做法
保持名稱、副標題、關鍵字、螢幕截圖與預覽準確反映送審的二進位檔與實際 UI。不要使用價格、競爭對手術語或誤導性聲明。套用 Metadata Compliance Checklist 中的欄位限制與媒體規則,並將研究、排名、轉換、螢幕截圖順序與 A/B 測試交由 app-store-optimization 處理。
申訴流程
在 App Store Connect 的 Resolution Center 中回覆,附上簡潔的證據鏈:
- [ ] 將拒絕對應到引用的指南與確切的送審行為。
- [ ] 如果已修正,指出精確的變更並重新送審;如果爭議,說明送審如何滿足每個相關要求。
- [ ] 附上重現合規所需的證據,例如有效的示範帳號憑證、螢幕截圖或重點影片逐步解說。
- [ ] 如果交流仍未解決,透過 Resolution Center 或 App Store Contact 表單(App Review > Appeal)請求 App Review Board 升級,包含完整的送審歷史與支援證據。
委員會的決定對該送審為最終決定;修改應用程式並重新送審仍可行。
常見錯誤
- 模糊的使用說明。 指出使用資料的特定功能。
- 將程式碼品質視為審查合規。 並行與交易正確性不能取代隱私、付款、中繼資料與授權證據。
審查檢查清單
每次送審前快速檢查(完整版本在 references/review-checklists.md):
- [ ] 指南 2.1 完整性與審查存取通過 阻礙送審檢查
- [ ] 應用程式名稱與螢幕截圖符合二進位檔與當前版本要求
- [ ] 隱私證據通過 PrivacyInfo.xcprivacy 要求
- [ ] 隱私政策 URL 已設定且在應用程式內可存取
- [ ] 付款路徑通過 StoreKit 規則
- [ ] 支援深色模式與動態字型;使用標準導覽模式
- [ ] 封存與授權通過 阻礙送審檢查
- [ ] ATT 行為通過 ATT 標準
參考資料
- 審查檢查清單: references/review-checklists.md
- 隱私清單指南: references/privacy-manifest.md
- Apple App Review Guidelines: https://developer.apple.com/app-store/review/guidelines/
- Apple upcoming SDK requirements: https://developer.apple.com/news/upcoming-requirements/
- App Store Connect 螢幕截圖規格: https://developer.apple.com/help/app-store-connect/reference/app-information/screenshot-specifications/
- Sosumi 必要原因 API 文件: https://sosumi.ai/documentation/bundleresources/describing-use-of-required-reason-api




