# TestFlight 教學：送審前在 iPhone 上測試你的 App

> 內部與外部測試員、Beta 審查、公開連結、組建可測試 90 天：一篇看懂 TestFlight，附送審前檢查清單。

原始頁面：[TestFlight 教學：送審前在 iPhone 上測試你的 App](https://devoria.fr/zh-hant/blog/testflight-test-iphone-app-before-review)
作者：[Mehdi Azizi](https://devoria.fr/zh-hant/mehdi-azizi)
發布日期：2026-09-23
內容最後修訂：2026-10-09


## TestFlight 是什麼？有什麼用？

TestFlight 是 Apple 提供的服務，讓你在 App 上架 App Store 之前，就能裝到真正的 iPhone 上。你把組建（build）上傳到 App Store Connect，邀請測試員，他們再用 App Store 上免費的 TestFlight App 安裝。測試員分兩種：內部測試員，最多 100 位團隊成員，不需要 Apple 審查；外部測試員，最多 10,000 人，透過電子郵件或公開連結邀請，但你的第一個組建要先通過 Beta 審查。每個組建可以測試 90 天。

| 條件            | 內部測試員           | 外部測試員         |
| --------------- | -------------------- | ------------------ |
| 人數上限        | 100                  | 10,000             |
| 能存取你的帳號  | 可以，需指派角色     | 不行               |
| 邀請方式        | 加入內部群組         | 電子郵件或公開連結 |
| Apple Beta 審查 | 不需要               | 第一個組建需要     |
| 適合誰          | 你自己、合夥人、親友 | 朋友、早期使用者   |

要使用 TestFlight，你需要[付費的 Apple Developer 帳號](https://devoria.fr/zh-hant/blog/apple-developer-account-price-free-or-99)：[免費帳號無法使用這項服務](https://developer.apple.com/support/compare-memberships/)。本文接下來都假設你已經有標準方案的帳號：Apple 企業方案是不能用 TestFlight 的。

我的每個 App，透過 EAS Submit 上傳的組建都會先經過 TestFlight 和我自己的 iPhone，才送去審查。開發時看不到的問題，都是在這一步發現的。

## 把組建上傳到 TestFlight

組建就是你的 App 編譯並簽署後的版本：簽署有問題的話，Apple 在上傳時就會用 ITMS-90034 拒絕。要讓它出現在 TestFlight，你必須把它送到 App Store Connect。用 Expo 的話，就是先 `eas build --platform ios` 再 `eas submit --platform ios`，而且建置映像要夠新，才不會遇到 ITMS-90725。[根據 Expo 的文件](https://docs.expo.dev/submit/ios/)，組建經 Apple 處理後就會出現在 TestFlight，通常要 10 到 15 分鐘。這些全部都能在 PC 上完成：[沒有 Mac 也能上架 iOS App](https://devoria.fr/zh-hant/blog/publish-ios-app-without-mac-expo-eas) 這篇有完整流程。

第一次常卡在兩個細節：

- **每次上傳，組建號碼都要不同。** 同一個版本，Apple 不接受兩個號碼相同的組建。用 EAS 的話，開啟自動遞增，就不用再煩惱。
- **加密相關的問題。** 只要你還沒回答加密使用的問題，組建就會卡在「缺少合規資訊」（Missing Compliance）的狀態。你可以每次在 App Store Connect 裡回答，也可以在 App 設定中一次宣告完畢。

## 內部測試員：你的團隊，不用等

內部測試員是你 App Store Connect 帳號裡、有被指派角色的使用者。[Apple 最多允許 100 位](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview)，每人可以[把 App 裝在多台裝置上](https://developer.apple.com/testflight/)，最多 30 台。

最大的優點：不用 Beta 審查。組建一處理完、沒有 ITMS-90717 這類自動錯誤，你把它加進內部群組就能用了。這個群組適合你自己，還有你開放帳號權限給的合夥人或親友。

限制是：必須把他們加為你 App Store Connect 帳號的使用者。不適合陌生人。

## 外部測試員與 Beta 審查

外部測試員完全不需要存取你的帳號。[你最多可以邀請 10,000 人](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview)，用電子郵件或公開連結。這個群組適合朋友、早期使用者或社群。

代價是 Apple 會先檢查組建，才開放給他們。[當你把某個版本的第一個組建加入外部群組](https://developer.apple.com/help/app-store-connect/test-a-beta-version/invite-external-testers)，它就會進入 Beta 審查。同一版本之後的組建，不一定需要完整審查。

送出前，App Store Connect 會要求你填寫測試資訊：

- **Beta 版說明**，告訴測試員要看哪些地方；
- **接收回饋的電子郵件**；
- **你的聯絡資訊**，讓 Apple 能聯絡到你。

> Beta 審查不是 App Store 審查。在 TestFlight 通過的組建，上架時還是可能被拒。

Beta 審查檢查組建是否符合規範，但最終審查還會看你的商品頁、訂閱、法律文字和整體體驗。記住常見的被拒原因，請看[為什麼 Apple 會拒絕 App](https://devoria.fr/zh-hant/blog/apple-app-rejection-reasons-real-cases)。

## 用公開連結邀請測試員

想讓還不認識的人測試你的 App，公開連結是最簡單的方法。以下是 [Apple 的操作步驟](https://developer.apple.com/help/app-store-connect/test-a-beta-version/invite-external-testers)，介面標籤為英文：

1. 在 App Store Connect 開啟你的 App，進入 **TestFlight** 分頁。
2. 在 **External Testing** 底下選擇你的外部群組。
3. 點選 **Create Public Link**。
4. 選 **Open to Anyone** 開放給所有人，或選 **Filter by Criteria** 限定特定裝置和 iOS 版本。
5. 如果需要，用 **Set Limit** 設定測試員人數上限。

接著把連結分享到任何地方：訊息、社群網站、電子郵件。對方安裝 TestFlight App，打開連結並接受邀請即可。

大量散布之前，有兩件事要知道：

- **設定人數上限。** 萬一連結傳得比預期更廣，你仍能掌控測試員人數。
- **透過公開連結加入的測試員是匿名的。** App Store Connect 只會顯示他們的安裝日期、使用次數和當機紀錄。如果你想知道誰測了什麼，改用電子郵件邀請。

## TestFlight 組建可以用多久？

[組建會開放給測試員 90 天](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testflight-overview)。超過就會過期，測試員再也打不開。如果 Beta 測試期比較長，在到期前上傳新組建就好。

實際上，你上傳新組建的頻率會高很多：每次重要修正都會傳一次。每個加進群組的新組建都會推給測試員，他們在 TestFlight App 裡就能更新。

## 收集測試員的回饋

TestFlight 內建回饋系統：[測試員在你的 App 裡截圖、可以加註，再傳給你](https://developer.apple.com/testflight/)。App 當機時，你會收到當機報告，測試員也能補充說明。全部都能在 App Store Connect 查看。

這很有用，但要搞懂某個特定當機還不夠。我的 App 會加上 Sentry，它會回報錯誤並指出出問題的程式碼行；還有 PostHog，它能看出使用者在哪裡放棄。兩者在 TestFlight 組建和正式版中都能運作。

## 在 TestFlight 測試訂閱

如果你的 App 有賣訂閱，TestFlight 就是確認它真的能用的地方。[在 TestFlight 組建中的購買會走 Apple 的測試環境](https://developer.apple.com/help/app-store-connect/test-a-beta-version/testing-subscriptions-and-in-app-purchases-in-testflight/)：測試員不會被扣款。續訂會加速：不論實際週期多長，每個訂閱每天續訂一次，一週內最多六次。

至少要確認顯示的價格正確、購買後確實能解鎖 App，以及重新安裝後「恢復購買」按鈕能找回訂閱。我用 RevenueCat 管理 App 的訂閱；從 App Store Connect 的商品設定到付費牆，完整做法都在 [iOS App 內訂閱](https://devoria.fr/zh-hant/expertise/ios-in-app-subscription)這一頁。

## 送審前一定要測的項目

這是我每次送審前都會跑的清單。每一項都對應一個被拒原因，或是一個本來可以避免的當機。

### 第一次啟動

- 刪除 App，從 TestFlight 重新安裝，再打開。審查人員就是這樣做的。
- 完整跑一遍引導流程，不要跳過任何步驟。
- 拒絕每一項權限（通知、相機、位置），確認 App 仍能正常運作。

### 金流

- 付費牆有顯示價格、週期，以及使用條款和隱私權政策的連結。
- 購買能用，恢復購買也能用。
- 所有設定好的商品審查人員都看得到：[準則 2.1](https://developer.apple.com/app-store/review/guidelines/) 要求 App 內購買項目必須完整、可見且能正常運作。

### 艱困情境

- 飛航模式和慢速網路：要有清楚的訊息，而不是一片白畫面。
- 你支援的最小和最大 iPhone：不能有內容被切掉，也不能被鍵盤擋住。我的 Solys 就曾因為小 iPhone 上畫面被切掉而被拒。
- 如果 App 有翻譯，要測長文字。

### 給審查人員的資料

- 如果 App 需要登入，在審查備註中提供示範帳號，而且後端要開著。準則 2.1 明確要求這點。
- 審查備註用兩句話說明 App 的功能，以及主要功能在哪裡。

如果 App 還是被拒，[App 被 Apple 拒絕](https://devoria.fr/zh-hant/expertise/app-rejected-by-apple)這一頁會教你怎麼回覆，不用白白浪費一週。想看從商品頁到上架的完整流程，請讀[把 App 上架到 App Store](https://devoria.fr/zh-hant/expertise/publish-app-on-app-store)。

## 在你的組建上填寫的驗收表

[下載包含 16 個情境的 CSV 驗收表](https://devoria.fr/ressources/recette-premiere-app-ios.csv)。它分成事前準備、要執行的操作、預期結果和實際觀察到的證據。匯入 Numbers、Excel 或 Google Sheets，再填上每次測試的版本、裝置和結果。

以一個虛構的閱讀筆記 App 為例，只寫「儲存一頁」是不夠的：記下第 24 頁，完全關閉 App，重新開啟，確認數值還在。還沒執行的測試，就維持「待測試」。如果你的 App 沒有訂閱，購買相關情境就填「不適用」，並寫明理由。

這張表是讓你調整的起點，不是認證。你也可以參考 [App Review 備註和其他免費範本](https://devoria.fr/zh-hant/resources)，向審查人員說明你實際驗證過的流程。

## 從 TestFlight 到 App Store

TestFlight 是你的 App 變得真實的階段：它在真正的 iPhone 上運作，握在真實的人手中。在 [iOS Kit](https://devoria.fr/zh-hant/kits/ios) 的流程中，這是第二步：打造 App 的核心並用 TestFlight 在你的 iPhone 上測試，接著串接訂閱，最後準備上架。

TestFlight 之後就是 Apple 審查：[Apple Review Kit](https://devoria.fr/zh-hant/kits/review-apple) 收錄了我的送審前檢查清單和給審查人員的備註。首頁介紹了用 Claude Code [打造你的行動 App](https://devoria.fr/zh-hant) 的四個步驟。

沒有人能保證 Apple 一定會接受你的 App：決定權在 Apple。

## 常見問題

### 怎麼用 TestFlight 測試 iPhone App？

把組建上傳到 App Store Connect，再加進測試員群組。用 Expo 的話，用 EAS Build 編譯，再用 [EAS Submit](https://devoria.fr/zh-hant/blog/eas-submit-ios-expo-app-store) 上傳：根據 Expo 的說法，經 Apple 處理後通常 10 到 15 分鐘就會出現在 TestFlight。測試員用 App Store 上免費的 TestFlight App 安裝。你需要付費的 Apple Developer 帳號。

### 怎麼產生 TestFlight 連結來邀請測試員？

在 App Store Connect 打開你 App 的 TestFlight 分頁，在 External Testing 底下選擇群組，點 Create Public Link。選 Open to Anyone 或 Filter by Criteria，再用 Set Limit 設定上限。透過公開連結加入的測試員是匿名的：如果你想知道誰測了什麼，改用電子郵件邀請。

### TestFlight 的 Beta 審查可以取代 App Store 審查嗎？

不行。Beta 審查檢查組建是否符合規範，但最終審查還會看你的商品頁、年齡分級、訂閱、法律文字和整體體驗。所以在 TestFlight 通過的組建，上架時還是可能被拒。只有外部測試員會觸發 Beta 審查，而且是針對某個版本的第一個組建：內部測試員完全不用審查。

### TestFlight 可以邀請多少測試員？

最多可以邀請 100 位內部測試員和 10,000 位外部測試員。內部測試員是你 App Store Connect 帳號的成員，不需 Beta 審查，每人最多可在 30 台裝置上安裝。外部測試員透過電子郵件或公開連結邀請，第一個組建需先通過 Beta 審查。每個組建可以測試 90 天。

### 在 TestFlight 測試訂閱會被扣款嗎？

不會，在 TestFlight 組建中的購買會走 Apple 的測試環境：測試員不會被扣款。續訂會加速：不論實際週期多長，每個訂閱每天續訂一次，一週內最多六次。至少要確認顯示的價格、App 的解鎖，以及重新安裝後的恢復購買。完整做法請看 [iOS App 內訂閱](https://devoria.fr/zh-hant/expertise/ios-in-app-subscription)。

### 送交 Apple 前，要在 TestFlight 檢查什麼？

像審查人員一樣從 TestFlight 重新安裝 App，完整跑一遍引導流程。拒絕每一項權限，測試購買和恢復購買，再試試飛航模式，以及你支援的最小和最大 iPhone。如果 App 需要登入，在審查備註中準備示範帳號，而且後端要開著。


## 你的專案

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