TestFlight 教學:送審前在 iPhone 上測試你的 App
作者:Mehdi Azizi
更新於 ,8 分鐘
內部與外部測試員、Beta 審查、公開連結、組建可測試 90 天:一篇看懂 TestFlight,附送審前檢查清單。
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 帳號:免費帳號無法使用這項服務。本文接下來都假設你已經有標準方案的帳號: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 的文件,組建經 Apple 處理後就會出現在 TestFlight,通常要 10 到 15 分鐘。這些全部都能在 PC 上完成:沒有 Mac 也能上架 iOS App 這篇有完整流程。
第一次常卡在兩個細節:
- 每次上傳,組建號碼都要不同。 同一個版本,Apple 不接受兩個號碼相同的組建。用 EAS 的話,開啟自動遞增,就不用再煩惱。
- 加密相關的問題。 只要你還沒回答加密使用的問題,組建就會卡在「缺少合規資訊」(Missing Compliance)的狀態。你可以每次在 App Store Connect 裡回答,也可以在 App 設定中一次宣告完畢。
內部測試員:你的團隊,不用等
內部測試員是你 App Store Connect 帳號裡、有被指派角色的使用者。Apple 最多允許 100 位,每人可以把 App 裝在多台裝置上,最多 30 台。
最大的優點:不用 Beta 審查。組建一處理完、沒有 ITMS-90717 這類自動錯誤,你把它加進內部群組就能用了。這個群組適合你自己,還有你開放帳號權限給的合夥人或親友。
限制是:必須把他們加為你 App Store Connect 帳號的使用者。不適合陌生人。
外部測試員與 Beta 審查
外部測試員完全不需要存取你的帳號。你最多可以邀請 10,000 人,用電子郵件或公開連結。這個群組適合朋友、早期使用者或社群。
代價是 Apple 會先檢查組建,才開放給他們。當你把某個版本的第一個組建加入外部群組,它就會進入 Beta 審查。同一版本之後的組建,不一定需要完整審查。
送出前,App Store Connect 會要求你填寫測試資訊:
- Beta 版說明,告訴測試員要看哪些地方;
- 接收回饋的電子郵件;
- 你的聯絡資訊,讓 Apple 能聯絡到你。
Beta 審查不是 App Store 審查。在 TestFlight 通過的組建,上架時還是可能被拒。
Beta 審查檢查組建是否符合規範,但最終審查還會看你的商品頁、訂閱、法律文字和整體體驗。記住常見的被拒原因,請看為什麼 Apple 會拒絕 App。
用公開連結邀請測試員
想讓還不認識的人測試你的 App,公開連結是最簡單的方法。以下是 Apple 的操作步驟,介面標籤為英文:
- 在 App Store Connect 開啟你的 App,進入 TestFlight 分頁。
- 在 External Testing 底下選擇你的外部群組。
- 點選 Create Public Link。
- 選 Open to Anyone 開放給所有人,或選 Filter by Criteria 限定特定裝置和 iOS 版本。
- 如果需要,用 Set Limit 設定測試員人數上限。
接著把連結分享到任何地方:訊息、社群網站、電子郵件。對方安裝 TestFlight App,打開連結並接受邀請即可。
大量散布之前,有兩件事要知道:
- 設定人數上限。 萬一連結傳得比預期更廣,你仍能掌控測試員人數。
- 透過公開連結加入的測試員是匿名的。 App Store Connect 只會顯示他們的安裝日期、使用次數和當機紀錄。如果你想知道誰測了什麼,改用電子郵件邀請。
TestFlight 組建可以用多久?
組建會開放給測試員 90 天。超過就會過期,測試員再也打不開。如果 Beta 測試期比較長,在到期前上傳新組建就好。
實際上,你上傳新組建的頻率會高很多:每次重要修正都會傳一次。每個加進群組的新組建都會推給測試員,他們在 TestFlight App 裡就能更新。
收集測試員的回饋
TestFlight 內建回饋系統:測試員在你的 App 裡截圖、可以加註,再傳給你。App 當機時,你會收到當機報告,測試員也能補充說明。全部都能在 App Store Connect 查看。
這很有用,但要搞懂某個特定當機還不夠。我的 App 會加上 Sentry,它會回報錯誤並指出出問題的程式碼行;還有 PostHog,它能看出使用者在哪裡放棄。兩者在 TestFlight 組建和正式版中都能運作。
在 TestFlight 測試訂閱
如果你的 App 有賣訂閱,TestFlight 就是確認它真的能用的地方。在 TestFlight 組建中的購買會走 Apple 的測試環境:測試員不會被扣款。續訂會加速:不論實際週期多長,每個訂閱每天續訂一次,一週內最多六次。
至少要確認顯示的價格正確、購買後確實能解鎖 App,以及重新安裝後「恢復購買」按鈕能找回訂閱。我用 RevenueCat 管理 App 的訂閱;從 App Store Connect 的商品設定到付費牆,完整做法都在 iOS App 內訂閱這一頁。
送審前一定要測的項目
這是我每次送審前都會跑的清單。每一項都對應一個被拒原因,或是一個本來可以避免的當機。
第一次啟動
- 刪除 App,從 TestFlight 重新安裝,再打開。審查人員就是這樣做的。
- 完整跑一遍引導流程,不要跳過任何步驟。
- 拒絕每一項權限(通知、相機、位置),確認 App 仍能正常運作。
金流
- 付費牆有顯示價格、週期,以及使用條款和隱私權政策的連結。
- 購買能用,恢復購買也能用。
- 所有設定好的商品審查人員都看得到:準則 2.1 要求 App 內購買項目必須完整、可見且能正常運作。
艱困情境
- 飛航模式和慢速網路:要有清楚的訊息,而不是一片白畫面。
- 你支援的最小和最大 iPhone:不能有內容被切掉,也不能被鍵盤擋住。我的 Solys 就曾因為小 iPhone 上畫面被切掉而被拒。
- 如果 App 有翻譯,要測長文字。
給審查人員的資料
- 如果 App 需要登入,在審查備註中提供示範帳號,而且後端要開著。準則 2.1 明確要求這點。
- 審查備註用兩句話說明 App 的功能,以及主要功能在哪裡。
如果 App 還是被拒,App 被 Apple 拒絕這一頁會教你怎麼回覆,不用白白浪費一週。想看從商品頁到上架的完整流程,請讀把 App 上架到 App Store。
在你的組建上填寫的驗收表
下載包含 16 個情境的 CSV 驗收表。它分成事前準備、要執行的操作、預期結果和實際觀察到的證據。匯入 Numbers、Excel 或 Google Sheets,再填上每次測試的版本、裝置和結果。
以一個虛構的閱讀筆記 App 為例,只寫「儲存一頁」是不夠的:記下第 24 頁,完全關閉 App,重新開啟,確認數值還在。還沒執行的測試,就維持「待測試」。如果你的 App 沒有訂閱,購買相關情境就填「不適用」,並寫明理由。
這張表是讓你調整的起點,不是認證。你也可以參考 App Review 備註和其他免費範本,向審查人員說明你實際驗證過的流程。
從 TestFlight 到 App Store
TestFlight 是你的 App 變得真實的階段:它在真正的 iPhone 上運作,握在真實的人手中。在 iOS Kit 的流程中,這是第二步:打造 App 的核心並用 TestFlight 在你的 iPhone 上測試,接著串接訂閱,最後準備上架。
TestFlight 之後就是 Apple 審查:Apple Review Kit 收錄了我的送審前檢查清單和給審查人員的備註。首頁介紹了用 Claude Code 打造你的行動 App 的四個步驟。
沒有人能保證 Apple 一定會接受你的 App:決定權在 Apple。
常見問題
怎麼用 TestFlight 測試 iPhone App?
把組建上傳到 App Store Connect,再加進測試員群組。用 Expo 的話,用 EAS Build 編譯,再用 EAS Submit 上傳:根據 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 內訂閱。
送交 Apple 前,要在 TestFlight 檢查什麼?
像審查人員一樣從 TestFlight 重新安裝 App,完整跑一遍引導流程。拒絕每一項權限,測試購買和恢復購買,再試試飛航模式,以及你支援的最小和最大 iPhone。如果 App 需要登入,在審查備註中準備示範帳號,而且後端要開著。