許多獨立開發者與外包團隊的主力機是 Windows,但 App Store 上架鏈路仍繞不開 Apple 生態:程式碼簽名、Archive、上傳 .ipa、TestFlight 分發、提交審核都依賴 macOS 工具鏈。好消息是,這並不等於你必須在工位上放一台 Mac——2026 年更務實的做法是:Windows 負責日常開發與 App Store Connect 營運,雲端 Mac 負責簽名與發版。本文依上架時間線拆解每一步「能在 Windows 做」與「必須在 Mac 做」,並提供可複用的 checklist。
結論先行:上架可以「Windows 主導」,簽名上傳必須「Mac 執行」
把 iOS 上架拆成兩類任務,邊界就清晰了。商店面向的工作——帳號、元資料、定價、審核溝通——多半在瀏覽器完成;建置面向的工作——憑證、Keychain、Archive、codesign——必須在 macOS 上執行。下表是大多數 Windows 團隊會釘在發版手冊旁的對照表。
| 環節 | Windows 能否完成 | 說明 |
|---|---|---|
| 註冊 Apple Developer Program | 可以 | 瀏覽器完成,需 Apple ID 與身份/企業驗證 |
| App Store Connect 填元資料、截圖、定價 | 可以 | 純 Web 後台,Windows 瀏覽器即可 |
| 寫程式碼、Git、跨平台框架編譯 | 大部分可以 | Flutter/RN/KMP 可在 Windows 寫程式;iOS 最終建置仍要 Mac |
| 管理憑證、Provisioning Profile、Keychain | 不可以 | 需在 macOS 鑰匙圈與 Xcode 中操作 |
| Archive、codesign、產生 .ipa | 不可以 | xcodebuild / Xcode Organizer 僅 macOS |
| 上傳 TestFlight / App Store | 間接可以 | Transporter 有 macOS 版;也可用 fastlane 在雲 Mac 上傳 |
| 審核溝通、版本發布、銷售報表 | 可以 | App Store Connect 網頁端 |
上架全流程地圖:六步從 0 到 App Store
無論你是原生 Swift、Flutter 還是 React Native,上架主路徑相同。下面按時間順序排列,並標註每步的推薦執行環境。新同事問「Windows 在哪裡停、Mac 從哪裡開始」時,這張地圖就是標準答案。
- 加入 Apple Developer Program(個人 $99/年或企業帳號,以 Apple 官網為準)
- 在 App Store Connect 建立 App 記錄:Bundle ID、名稱、主要語言、SKU
- 設定簽名:Distribution 憑證 + App Store Provisioning Profile
- Archive 並上傳建置版本:Xcode Organizer 或
fastlane gym + pilot/deliver - TestFlight 內測/外測:驗證閃退、權限、登入、付費等關鍵路徑
- 提交 App Review 並發布:填審核備註、出口合規、隱私標籤,通過後選區上架
步驟 1、2、5(測試員管理)與 6(元資料與審核回覆)是 Windows 團隊花最多日曆時間的地方。步驟 3 與 4 牆鐘時數較短但技術風險較高——請在第一次硬截止日前預約雲 Mac 時段,不要拖到提交前夜。
跨平台框架(Flutter、React Native、Kotlin Multiplatform)團隊尤其受益於這種分工:業務邏輯與 UI 在 Windows 上迭代,只有 iOS 二進位產物必須在 macOS 上產生。把「上架」當成獨立子專案,而不是開發結束後的附帶動作,可以大幅減少首發延遲。
第一步:Apple 開發者帳號與 App Store Connect(Windows 瀏覽器)
在 Apple Developer Program 用 Apple ID 註冊。個人開發者通常需要身份驗證;公司帳號需 D-U-N-S 等企業資料。審核週期因地區而異,建議儘早申請,不要等套件打好再開帳號。
帳號生效後,登入 App Store Connect,在「我的 App」中點「+」新建 App。你需要提前在 Certificates, Identifiers & Profiles 裡註冊 Bundle Identifier,並與 Xcode 工程裡的 PRODUCT_BUNDLE_IDENTIFIER 一致。
以下工作都可以在 Windows 上完成:
- 填寫 App 名稱、副標題、描述、關鍵字、支援 URL、隱私權政策連結
- 上傳各尺寸截圖與預覽影片(可用 Figma、Photoshop 等 Windows 工具製作)
- 設定定價、銷售地區、App 內購買項目與訂閱
- 填寫 App 隱私詳情(Privacy Nutrition Labels)與資料收集聲明
- 新增 TestFlight 測試員、管理審核用的示範帳號
許多團隊低估元資料所需時間。撰寫商店文案、本地化描述、為各裝置尺寸製作截圖集,往往與工程並行——且都不需要 Mac。請像排 QA 一樣,為 App Store Connect 工作預留日曆時段。
若 App 支援多語言,在 Connect 裡為每種語言分別填寫描述與關鍵字,並準備對應語言的截圖。審核團隊會用你選定的主要語言審查,但使用者看到的商店頁面取決於各語言欄位是否完整。Windows 上的設計與文案工具完全勝任這部分工作。
第二步:憑證、描述檔與簽名(必須在 Mac 上)
這是 Windows 使用者最容易卡住的環節。Apple 的 Distribution 憑證私鑰存放在 macOS 鑰匙圈中;Provisioning Profile 與 App ID、Capabilities(推播、Sign in with Apple、App Groups 等)綁定,通常透過 Xcode 的 Signing & Capabilities 面板管理最省心。
簽名問題的表象各異——「No signing certificate found」、「Provisioning profile doesn't match」——根因往往是指紋不一致或 Capability 在 Developer Portal 與 Xcode 專案間不同步。第一次上架建議預留半個工作日在 Mac 上專心處理簽名,而不是在 Windows 上反覆搜尋無解的 workaround。
推薦做法
- 在雲 Mac 或團隊共享 Mac 上,用 Xcode → Settings → Accounts 登入 Apple ID,讓 Xcode 自動管理簽名(Automatic Signing),或手動建立 Distribution 憑證
- 匯出 .p12 憑證 + 描述檔 前,先確認團隊金鑰管理規範——私鑰外洩等於他人可冒名發版
- CI 場景使用 App Store Connect API Key(.p8)配合 fastlane,減少人工登入;金鑰檔案同樣需安全儲存
- 記錄哪個 Apple ID 擁有 Distribution 憑證、哪台機器持有 Keychain 項目——這些知識只存在某一人腦中時,交接必定出問題
多地區團隊若需要統一簽名來源與 Runner 切換,可對照 iOS 簽名與描述檔在多地區雲 Mac 上的治理 FAQ。Windows 本機無法合法替代這一步——沒有 macOS Keychain,就沒有合規的 codesign 環境。
若從其他供應商接手專案,請在第一次 Archive 前確認簽名身分。Team ID 不符、過期描述檔、入口網站與工程檔 Capability 不一致,是 Windows 主導團隊首次上傳失敗的前三大原因。
第三步:Archive、上傳與 TestFlight
工程能在 Simulator 跑通之後,發版建置要用 Release + Generic iOS Device / Any iOS Device 做 Archive。常見三條上傳路徑:
| 方式 | 適合誰 | 備註 |
|---|---|---|
| Xcode Organizer → Distribute App | 第一次上架、需要圖形介面排錯 | 在雲 Mac 上 VNC 操作,Windows 側遠端查看 |
fastlane gym + pilot | 有 CI 經驗的團隊 | 腳本化 repeatable,適合固定發版節奏 |
| Transporter(macOS) | 已有 .ipa、不想開 Xcode | 拖曳上傳,適合外包交付物 |
上傳成功後,建置版本會出現在 App Store Connect → TestFlight。處理時間從幾分鐘到數小時不等。首次上傳常遇到:缺少出口合規資訊、加密聲明(Export Compliance)、dSYM 符號檔未同步等問題——多數在 Connect 網頁端補填即可,無需重新編譯。
TestFlight 階段建議至少涵蓋:冷啟動、登入/註冊、核心付費路徑、推播與 deep link、不同 iOS 版本與螢幕尺寸。若 App 含 StoreKit 或地區定價,區域沙盒測試的節點選型可參考 App Store 地域化沙盒聯調 FAQ。
請記錄建置編號(CFBundleVersion)與上傳時間戳。Apple 寄出 ITMS 相關郵件時,對準確切建置可省下數小時在 Windows 與雲 Mac 之間來回猜測。
TestFlight 外測需要 Beta App Review,首次外測往往比內測多等一兩天。若行銷檔期緊,請把外測審核時間算進整體時程,而不是假設上傳後立即可給外部使用者安裝。
第四步:提交審核與正式上架
TestFlight 驗證通過後,在 App Store Connect 選擇建置版本,填寫審核資訊:
- 聯絡人與電話(審核團隊可能來電)
- 示範帳號與密碼(若 App 需登入)
- 審核備註:說明後台開關、測試步驟、特殊硬體需求
- 內容版權、年齡分級、政府備案等合規項(視業務與地區而定)
點擊「提交審核」後進入 Waiting for Review → In Review。被拒時,Resolution Center 會給出 Guideline 條款;在 Windows 瀏覽器裡修改元資料、重新上傳建置或僅回覆說明均可。通過後選擇手動發布或自動發布到指定國家/地區。
常見拒審原因包括:閃退或佔位內容、隱私權政策缺失、權限描述(Info.plist Usage Description)不清晰、Guideline 4.3 相似應用、訂閱與 IAP 說明不符。這些多半與「用什麼電腦開發」無關,但第一次 Archive 前的 Info.plist 與 Capability 設定必須在 Mac/Xcode 側做對。
建議準備一份簡短的「審核包」文件供 PM 貼入 Connect:示範帳密、功能開關狀態、三步驟快樂路徑。審核人員也是人,清楚勝過行銷文案。
若 App 含登入牆,務必提供無需二次驗證、權限完整的測試帳號。審核被拒後在 Resolution Center 用英文簡潔回覆,通常比長篇辯解更快推進——這些回覆在 Windows 瀏覽器即可完成。
Windows 主力團隊的推薦工作流
一套經過大量團隊驗證的分工如下:
- Windows:VS Code / Cursor 寫程式,Git 提 PR,App Store Connect 填商店資訊,與審核團隊郵件往來
- 雲 Mac:拉同一 Git 倉庫,
pod install/ SPM 解析,Archive,fastlane 上傳,必要時 VNC 點 Xcode GUI 排 Signing 問題 - 連接:SSH 跑腳本,VNC 處理 GUI;製品與緩存放 Git / 物件儲存,避免跨系統手動拷檔
- 發版窗口:按天租用雲 Mac,發版週開通、平時關機,比每人配一台閒置 Mac 更省
Archive → TestFlight 逐步對照清單,可與 Windows 遠端 Xcode 編譯、簽名與 TestFlight 全流程 FAQ 交叉使用。該 FAQ 涵蓋 SSH 設定、常見 xcodebuild 參數與首次上傳錯誤碼。
版本控制上,建議在 Git tag 與 App Store Connect 建置版本之間建立對應關係。發版出問題時,Windows 上的 Git 歷史與雲 Mac 上的 Archive 日誌才能快速對上同一個 commit。
邊界條件:什麼時候「只租 CI」不夠
GitHub Actions 等託管 macOS Runner 適合無人值守建置,但以下情況仍建議保留可互動的雲 Mac:
- 第一次在 Xcode 裡勾選 Capability、修 Provisioning Profile 不匹配
- Organizer 報 ITMS 錯誤,需要對照 Xcode 日誌與 Apple 郵件排查
- 下載新 iOS Simulator runtime、處理 Swift Package 索引異常
- 審核緊急被拒,當天需改 Archive 重傳
CI 擅長可重複性;人工擅長一次性的入口網站與 Keychain 意外。兩者都要預算——不是二選一。
首次上架成功後,可將 Archive 腳本移入 CI,僅在需要 GUI 的例外情況連線雲 Mac——這種兩段式架構能顯著降低第二次以後的發版成本。
上架前 Checklist(可列印)
- Apple Developer Program 已啟用,Bundle ID 已註冊
- App Store Connect App 記錄已建立,隱私權政策 URL 可存取
- Distribution 憑證與 App Store Profile 有效,Capabilities 與工程一致
- Archive 使用 Release 設定,版本號(CFBundleShortVersionString / CFBundleVersion)符合遞增規則
- 建置已上傳 TestFlight,出口合規與加密聲明已填寫
- 截圖、描述、年齡分級聲明、示範帳號、審核備註已就緒
- 已知閃退與阻塞性 Bug 已修復,dSYM 已上傳(若需符號化閃退)
發版季用雲 Mac 承接簽名與上傳
對 Windows 團隊來說,買 Mac 只為一年發幾次版並不划算。按天租用的獨享 Mac mini 更適合「發版窗口」:開通 SSH/VNC,固定 Xcode 版本與簽名環境,Archive 完成後關機即可。vpszap 提供 Apple Silicon 實體機、多區域節點與按天計費,無需長約——與「Windows 寫程式、Mac 只幹發版」的分工天然契合。可先 了解 vpszap 雲端 Mac mini,用一次完整 Archive → TestFlight 鏈路驗證延遲與磁碟是否夠用。