被朋友塞來的一個公開連結:我用 TestFlight 當了一回匿名測試者

系统工具 ·约 9 分钟 ·記筆記的貓:團子

testflight 是什麼

如果你用 iPhone,大概見過朋友手機上有個藍色圖示的 App 叫 TestFlight——但它不是那種你自己會去 App Store 下載來用的應用程式。簡單說,testflight 是蘋果官方提供的 Beta 測試分發平台,讓開發者在上架 App Store 之前,把應用程式的測試版安全地送進測試者的手裡。

它的價值在於:開發者不用把 App 直接公開到商店(那要走嚴格的 App Store Review 審核通道),就能把功能還在打磨的版本送給一批人試用、收崩潰報告、看會話數據、甚至收反饋。對測試者來說,好處是能比一般用戶提早幾週甚至幾個月用上新功能,而且整個流程由蘋果把關,安全、穩定——不像外面那些 APK 下載網站亂七八糟。

testflight 支援的平台覆蓋蘋果全家桶:iPhone、iPad、Mac、Apple TV、Vision Pro,甚至 Apple Watch 的 App 也能透過配對的 iPhone 接受測試邀請。同時參與多個開發者的測試項目也沒問題,只要不超過賬號的設備數量上限就行,相關細節可以參考 testflight 的完整說明。

安裝

這款軟體的安裝其實就是兩件事:先有一個 Apple ID,然後 在你想測試的設備上安裝 TestFlight App。

iOS / iPadOS 用戶打開 App Store 搜尋「TestFlight」就能找到官方版本直接下載,具體操作可以參考 testflight下載 的分步指南;macOS 用戶則在 Mac App Store 搜尋同樣的名字。安裝完打開,系統會自動讓你用自己的 Apple ID 登入——這一步很重要,因為你後面接受的所有測試邀請、綁定的所有設備,都是掛在這個 Apple ID 底下的。

值得注意的是,每個 Apple ID 最多可以在 30 台設備上同時進行 testflight 測試。這 30 台是加總計算的:你有 iPhone、iPad、Mac、Apple TV,加起來就好幾台了。一般個人用戶離 30 台還遠得很,但如果你之前接受過好多不同開發者的邀請、手裡又換過好幾台舊設備,說不定哪一天就會突然收到「設備數量已達上限」的提示。那時候就得去 TestFlight 的設定頁把不再用的舊設備一一移除,騰出名額給新的。

Apple Watch 稍微特殊一點——它沒有獨立的 TestFlight App,接受測試邀請和停止測試的操作都要在配對的 iPhone 上完成,Watch 上的 Beta App 會跟著 iPhone 同步。


那個下午,朋友丟來一個連結

事情發生在一個普通的週二下午。我正忙著整理一份資料,手機彈出朋友的訊息:「幫我點這個連結,試試我剛寫好的 App,還沒上架 App Store 呢。」後面跟了一個看起來很隨機的網址,域名是 testflight.apple.com。

我對這個朋友的印象是愛折騰獨立開發的人——之前他寫過好幾款小工具,都是透過 testflight 給朋友圈測試的。但這次我好奇的是,他說這連結是給所有人的,不是只發給幾個熟人。我點進去,頁面跳出一個簡潔的說明:「XXX App 正在進行 Beta 測試,點此接受邀請」。下面有個按鈕寫着「Accept Invitation」。

點下去之後手機自動跳轉到了 TestFlight App——哦對,我之前某次幫另一位朋友測試的時候就裝好了這個藍色圖示。App 裡彈出一張卡片,介紹這款未上架 App 的主要功能、測試時應該注意哪些地方、還有幾個已知問題。我掃了一眼,確認了一下功能描述和朋友訊息裡說的一致,就點了「開始測試」。

公開連結接受邀請的畫面

第一次知道公開連結是匿名的

裝完那個 App 試玩了半小時,我回到 TestFlight 裡,想看看有沒有什麼反饋渠道。結果在詳情頁往下滾,看到一個「提交反饋」的按鈕。點進去,彈出了一個對話框:上面讓我選截圖(我可以從 App 裡截好再上傳),中間是文字說明,底部有個「聯絡郵箱」輸入框——但那個輸入框預設是空的,旁邊還寫著一句小字:「如果留空,反饋將以匿名方式提交」。

哦?匿名的?我之前還以為 testflight 會把我的聯絡方式都顯示給開發者呢。回去翻了翻朋友發的那個公開連結頁面的說明,才搞懂其中的區別:

郵件邀請不是匿名的——如果開發者是發邀請郵件到你的信箱,點接受之後開發者能看到你用的是哪個郵箱。但公開連結完全匿名——只要你是透過那一串隨機網址進來的,開發者在 App Store Connect 後台看到的只有彙總統計數據:有多少人點過連結、多少人真的安裝了、崩潰總數、按設備型號的分佈。他看不到你的姓名、看不到你的 Apple ID、看不到你的郵箱,也看不到你的精確地理位置。

唯一的例外是提交反饋時——如果你主動在那個留空的郵箱框裡填上自己的地址,開發者就能看到,之後可能會寫信跟你進一步溝通。但留空的話,他收到的就是一堆文字加截圖加設備資訊,完全不知道是哪個人發的。

TestFlight 反饋對話框

這個設計我覺得挺聰明的。它在保護測試者隱私的同時,也讓開發者有辦法對公開招募的測試者群體有整體的了解——比如到底有多少人真的裝了、哪種設備佔比最高、崩潰集中在哪個版本。但又捨棄了「開發者可以精確定位並聯絡某個匿名測試者」這件事——如果某個人的反饋特別詳細、開發者想跟他多聊兩句,在公開連結模式下是做不到的。朋友說他之前也踩過這個坑:有個匿名測試者發來超級詳細的 bug 描述,他想回信了解更多細節,卻找不到任何聯絡方式。

然後我的設備數量就滿了

那個週四我又收到另一個開發者的測試邀請——是我關注很久的一款音樂 App,據說新的 Beta 版加了歌詞顯示功能。我滿懷期待地點了邀請連結,結果 TestFlight 彈出一個紅色提示:「無法接受此邀請。您的測試設備數量已達上限。」

哦對了,30 台設備上限這回事。我打開 TestFlight 的設定頁,找到了設備列表——乖乖,裡面赫然躺著 27 台設備。大部分都是我之前換機淘汰下來的舊 iPhone 和舊 iPad,早就賣給別人或壓箱底了,但 Apple ID 裡的綁定關係沒有解除。

清理起來其實很簡單:在設備列表裡逐一找到不再使用的舊設備,點進去然後按「移除」就好。或者我也可以直接在那台舊設備(如果還在手邊的話)上打開 TestFlight,把之前接受的 Beta App 逐個「停止測試」——效果是一樣的,都會釋放出一個名額。我花了大概五分鐘把列表裡 18 台舊設備都清掉,然後回去重新點那個音樂 App 的邀請連結——這次順利通過了。

幾天後,我發現那個 Beta App 變成不可打開

再過了一個多星期,我發現最開始朋友推薦的那個 App 圖示還在主屏,但點開就彈出一個提示:「此構建的測試期已結束」。我回去問朋友,他說那個測試構建自上傳之日起滿 90 天了,testflight 會自動過期。他已經上傳了新版本,讓我重新去連結接受邀請。

原來 testflight 的每一個測試構建都有 90 天的有效期。除了等系統自動過期,開發者也可以在後台手動把某個構建標記為過期——比如發現某個版本有嚴重 bug,不想讓測試者繼續用了,就可以主動過期。

至於我那邊,過期的 Beta App 圖示還留在主屏上,只是點不開了。要乾淨的話得手動長按圖示刪掉。或者回到 TestFlight 裡找到那個已過期的項目,往下滾點「停止測試」,效果一樣。

一個禮拜後的小總結

那個禮拜我先後透過 testflight 參與了三個不同開發者的 Beta 項目,見識了公開連結的匿名機制、踩了設備數量上限的坑、體驗了 90 天自動過期的流程。

testflight 這套工具的設計邏輯挺清楚的:對開發者來說,它提供了一個在 App Store 上架之前安全、可控、有數據反饋的分發通道;對測試者來說,它給了你一個比 App Store Review 審核標準更寬鬆、比外面的 APK 網站更安全的早鳥體驗渠道。

它沒有什麼花哨的功能,就是把「測試版分發」這件事做純了——安全(蘋果審核把關)、穩定(不會隨便從第三方網站下到被篡改的包)、有數據(崩潰報告和會話數據自動收集)、隱私保護到位(公開連結完全匿名)。如果你身邊有開發者朋友在測試新 App,或者你自己就是那個想給 App 找測試者的開發者,testflight 值得了解一下。

本文為個人基於網路公開資料整理編寫,非官方內容,僅供學習交流參考;軟體版權歸原作者所有,請支持正版;使用過程中遇到問題請查閱官方管道,本文不承擔任何責任。

團子還試過這些