很多企業第一次做 APP,是從「找廠商報價」開始的。但真正決定專案順不順的,往往不是報價單上的數字,而是流程有沒有跑對順序。規格沒凍結就開工、原型沒驗證就寫程式、測試只在自己的手機上點一點、送審前才發現隱私政策還沒寫——這些都不是技術問題,是流程問題。
更麻煩的是,流程出錯的代價通常不會立刻顯現。它會延後到開發後期、驗收現場、或送審被退的那一刻才一次爆開,而那時候的修改成本已經是前期的好幾倍。
以下把一個 APP 專案從零到上線拆成六個階段,重點放在最常被低估、卻最容易讓時程整個炸掉的兩件事:測試的深度,以及上架審查。
APP 開發流程的六個階段總覽
先看全貌。每個階段都有明確的產出物,產出物沒交付,就不該進下一階段。
| 階段 | 主要產出物 | 主導角色 | 最常卡關的地方 |
|---|---|---|---|
| 需求訪談與規格凍結 | 需求清單、功能規格書(PRD) | 業主窗口 + 專案經理 | 需求講不完、範圍持續擴張 |
| 原型與 UI/UX 設計 | 線框圖、可點擊原型、設計稿 | UI/UX 設計師 | 用文字想像介面,事後才反悔 |
| 技術選型與架構規劃 | 技術文件、API 規格、資料庫設計 | 技術主管 | 選型只看成本,沒看三年後 |
| 開發與迭代 | 每輪可安裝的測試版本 | 工程團隊 | 進度黑箱,沒有定期可看的成果 |
| 測試與驗收 | 測試報告、UAT 簽核紀錄 | 測試人員 + 業主 | 只測功能,沒測機型與異常流程 |
| 上架與上線 | 商店頁面素材、審查通過、正式版本 | 專案經理 + 工程 | 審查被退,時程整個往後推 |
這張表最重要的訊息是:每一列的「產出物」都是可以拿在手上檢查的東西。如果某個階段結束時拿不出對應文件或可安裝版本,那個階段其實沒有做完,只是被口頭宣告完成而已。

需求訪談與規格凍結:決定專案八成成敗
需求訪談不是聽業主講一遍想要什麼功能,而是把「想要」翻譯成「做得出來、也驗收得了」的描述。
一個可用的功能規格,至少要能回答四件事:這個功能給誰用、觸發條件是什麼、成功時畫面怎麼變、失敗或例外時怎麼處理。第四項是最常被略過的,也是後期爭議最多的——沒有網路怎麼辦、付款失敗顯示什麼、同一組帳號在兩支手機登入要不要踢掉、後端逾時要重試幾次。這些問題在訪談時多花半小時釐清,勝過在驗收會議上吵兩個小時。
「規格凍結」的意思不是之後都不能改,而是改動要有明確的處理機制。台灣接案端的經驗分享反覆指向同一個糾紛來源:需求變更的計價方式沒有事先談妥。所以凍結時要一併說清楚三件事:變更如何提出、誰有權核准、對時程與費用的影響怎麼計算。把這段寫進合約附件,比事後憑印象爭論有用得多。
同樣要在這個階段確認的還有原始碼歸屬。專案完成後原始碼是否完整交付、日後自行修改或轉手其他廠商是否受限,這些沒寫清楚,未來換人接手時會非常被動。
原型驗證:用點得動的畫面取代想像
規格文件再詳細,看的人腦中浮現的畫面還是各自不同。原型的價值就在這裡:把抽象的功能敘述,變成可以用手指點的流程。
實務上分兩層。線框圖處理的是資訊架構與動線——哪些內容放同一頁、選單要幾層、主要任務要點幾下才完成。可點擊原型處理的是操作感受——按下去有沒有回饋、跳轉是否合理、找不找得到返回路徑、空狀態長什麼樣子。
這個階段多花一週,通常可以省下開發階段兩到三週的返工。因為改一張設計稿的成本,和改一段已經串好 API、寫完測試的程式碼,差距是數量級的。原型驗證真正的功能,是在成本還很低的時候把誤解逼出來。
技術選型:原生、跨平台還是 PWA
技術選型的核心不是「哪個比較新」,而是「哪個和這個專案的優先順序相符」。三條路線的差異可以這樣理解。
原生開發直接使用 iOS 的 Swift/SwiftUI 或 Android 的 Kotlin/Jetpack Compose,介面由作業系統繪製,最貼合平台規範,也最能完整取用硬體能力。
跨平台框架中,React Native 用 JavaScript 描述介面、再映射到原生元件,Meta 已於近年完成新架構重寫;Flutter 走的是自繪路線,介面由自家繪圖引擎產生,Dart 程式碼直接編譯成機器碼。兩者的共同賣點是一套程式碼同時產出雙平台。
PWA 本質上是網頁,透過瀏覽器能力提供接近 APP 的體驗,可以加到手機主畫面,但不進商店,也拿不到完整的裝置權限。
| 面向 | 原生(Swift/Kotlin) | 跨平台(React Native/Flutter) | PWA |
|---|---|---|---|
| 相對開發成本 | 最高(雙平台各做一套) | 中 | 最低 |
| 相對時程 | 最長 | 中 | 最短 |
| 效能與流暢度 | 最佳 | 多數情境足夠 | 受瀏覽器限制 |
| 硬體整合深度 | 完整(藍牙週邊、感測器、CarPlay、watchOS) | 常見功能可用,冷門能力需自寫原生模組 | 有限 |
| 推播通知 | 完整支援 | 完整支援 | 支援程度視平台與系統版本而定 |
| 是否進商店 | 是 | 是 | 否 |
| 是否需通過審查 | 是 | 是 | 否 |
| 後續維護重點 | 兩套程式碼各自跟進系統改版 | 框架版本升級是主要風險 | 瀏覽器相容性 |
| 適合情境 | 效能吃重、深度硬體整合、單一平台專案 | 雙平台需求、功能以資料呈現與流程操作為主 | 內容導向、以網頁為核心的服務 |
表格只能給方向,實際判斷還要看團隊手上有什麼人。一個熟悉 React 的團隊選 React Native,和一個沒有 JavaScript 底子的團隊選 React Native,落地品質會完全不同。技術選型跟著團隊能力走,通常比跟著趨勢走安全。
另外,「其實只要一個好用的手機版網站就夠了」的情況也不少見。若核心需求是內容瀏覽、表單填寫或簡單查詢,先評估手機網站設計的可行性,會比直接投入 APP 務實。不同路線的成本落差確實不小,但那屬於報價結構的討論,可以另外參考請人寫 App 多少錢的費用整理。
專案角色分工與交付物:誰該交出什麼
流程之所以會卡,很多時候是因為「誰負責」沒講清楚。把角色與交付物同時定義出來,責任才落得下去。
| 角色 | 主要職責 | 應交付的具體成果 |
|---|---|---|
| 業主窗口 | 決策、提供業務規則、確認設計與驗收 | 需求優先順序、各階段的書面確認、UAT 簽核 |
| 專案經理 | 排程、風險控管、變更管理 | 時程表、週報、變更紀錄、風險清單 |
| UI/UX 設計師 | 動線與介面設計 | 線框圖、可點擊原型、設計規範與切圖 |
| 前端/APP 工程師 | 介面實作與 API 串接 | 可安裝測試版本、原始碼與版本紀錄 |
| 後端工程師 | 伺服器、資料庫、API | API 文件、資料庫結構、部署說明 |
| 測試人員 | 驗證品質與相容性 | 測試計畫、缺陷清單、測試報告 |
其中最容易被低估的是業主窗口的角色。業主端不是只出錢等交付,而是要在每個檢查點做出決策;窗口人選若無權決策,訊息要層層上報再回來,時程一定會被拉長。
開發與迭代:讓進度是看得見的
APP 開發最怕的狀況是「三個月後才第一次看到東西」。合理的做法是把開發切成兩到三週一輪的迭代,每一輪結束都交付一個可安裝的版本,讓業主實際點過。
搭配的基礎建設有三樣:版本控制(Git,含分支策略與程式碼審查)、自動化建置與發佈流程,以及缺陷追蹤系統。這三樣不是為了讓報價單好看,而是決定日後出問題時「查不查得出來、回不回得去」。近年 AI 輔助開發也大幅改變了工作方式與交付節奏,這部分在 2026 軟體開發趨勢中有更完整的討論。
業主端在這個階段的責任是:每一輪都要真的去點,並在當輪內給回饋。累積到最後一次才一口氣提二十項修改,時程一定會被推遲,而且很多修改會因為互相衝突而需要重新討論。
測試要測到什麼程度才算夠
「點過了沒問題」不是測試。一個交付得出去的 APP,測試至少分四層。
單元測試驗證單一函式或模組的邏輯正確,例如折扣計算、日期換算、稅額進位。整合測試驗證模組之間串接無誤,特別是 APP 與後端 API 的資料往返、第三方金流或登入服務的回應處理。
跨機型與跨版本測試處理的是碎片化問題。Android 機型與系統版本差異極大,iOS 則要涵蓋還在支援期的版本與不同螢幕尺寸;瀏海、動態島、小尺寸螢幕、深色模式、系統大字級都是常見翻車點。使用者驗收測試(UAT)由業主依規格文件逐條確認,這是驗收的正式依據,不該只看一次功能展示就簽字。
還有一類最容易漏掉:異常流程測試。斷網、弱網、權限被拒絕、後端逾時、儲存空間不足、通話中斷、App 被系統回收後再開啟——這些情境在真實使用中很常見,卻幾乎不會出現在展示影片裡,也因此最容易在上線後變成客訴。
正式送審前,兩大平台都提供官方的測試發佈管道。iOS 端的 TestFlight 分內部與外部兩軌:內部測試最多 100 位開發團隊成員、不需審查即可發送;外部測試最多可達 10,000 人,但需經過 beta 審查,且每個版本有 90 天有效期。Android 端的 Google Play 測試軌道分內部、封閉、開放三種,內部測試最多 100 人,封閉測試以 Email 名單管理,開放測試則任何人都能加入並回饋。
上架審查:最容易被低估的關卡
很多專案的時程是在這一步失控的。原因不是審查很慢,而是團隊完全沒有為審查做準備。
Apple 的審查實況
依 Apple 官方的 App Review 說明,平均而言 90% 的送審案件在 24 小時內完成審查。也就是說,審查本身其實很快——真正拖時程的,是被退件之後的來回修改。

同一份官方資料指出,超過 40% 未解決的問題與準則 2.1「App 完整性」有關。這條準則要求的其實都是基本功:
- 若 APP 有登入功能,必須提供可用的測試帳號,而且後端服務要開著。這是最常見的退件原因之一,不少團隊送審時後端還連著已關閉的測試環境。
- 所有連結必須有效,隱私政策與客服聯絡方式都要能點得開。
- 送審前必須在實機測試過,審查過程中閃退幾乎必退。
- 商店頁面的截圖與說明必須與實際功能一致,不得留有 placeholder 文字或空白頁面。
- 內購項目必須完整、可見、可運作。
App Review Guidelines 分為安全、效能、商業、設計、法務五大章節,其中還有兩條特別值得中小企業注意。
準則 4.2 最低功能要求明白排除「把網站重新包裝成 APP」的做法。純行銷素材、廣告、網頁剪貼、內容聚合、連結集合都會被退。若企業的規劃只是把官網塞進 WebView,這條會直接擋下來。
準則 5.1.1 隱私與資料蒐集要求在 App Store Connect 與 APP 內都提供隱私政策連結,明確說明蒐集哪些資料、如何蒐集、所有用途,並確認第三方 SDK 提供同等保護。其中 5.1.1 第五項特別規定:只要 APP 支援註冊帳號,就必須在 APP 內提供刪除帳號的功能,不能要求使用者聯絡客服或走外部管道。這一條在台灣專案中被漏掉的比例相當高,而且它牽動的是規格設計,不是上架前補得完的東西。
若確定審查結果有誤,可向 App Review Board 申訴,但須提出具體理由,且每次送審只能申訴一次,申訴前也要先回覆 Apple 的補件要求。
Google Play 的審查與新帳號門檻
Android 這邊有一個容易被忽略的規定。依 Google Play 官方說明,2023 年 11 月 13 日之後建立的個人開發者帳號,必須先完成封閉測試才能申請正式版發布:至少 12 位測試人員、連續參與 14 天,中斷後再加入不列入計算。完成後提出正式版存取權申請,審查通常在 7 天內完成,偶爾更久。
這條規定有兩個實務重點。第一,它針對的是個人帳號,公司或機構帳號不適用——但若專案圖方便用了個人帳號註冊,就會踩到這道門檻,而且無法回頭。第二,這 14 天是硬性等待,無法用加班壓縮,必須在排程時就預留進去。企業客戶的正確做法,是專案一啟動就以公司名義申請開發者帳號,並確認登記資料與證件英譯一致。
送審前的自我檢查清單
把常見退件原因整理成表,送審前逐項對照,通常可以避開絕大多數的第一次退件。
| 退件類型 | 具體情況 | 事前可做的準備 |
|---|---|---|
| App 完整性 | 測試帳號失效、後端環境關閉、審查中閃退 | 送審前開好專用測試帳號與環境並實機測過 |
| 連結與資訊 | 隱私政策連結失效、客服資訊過期 | 送審前逐一點過所有外部連結 |
| 最低功能 | 只是把網站包裝成 APP | 規格階段就確認有原生價值的功能 |
| 隱私合規 | 未說明資料用途、缺少刪除帳號功能 | 設計階段就把帳號刪除納入規格 |
| 商店素材 | 截圖與實際畫面不符、說明含 placeholder | 上架素材與最終版本同步製作 |
| 權限說明 | 相機、定位權限的用途字串過於籠統 | 逐項撰寫具體的權限用途說明 |
| 帳號機制 | 支援註冊卻無法在 APP 內刪除帳號 | 規格納入帳號刪除與資料處理流程 |
這張清單的價值在於:上面每一項都應該在送審前一週就完成,而不是等審查回覆才開始處理。
上線之後:更新節奏與熱修機制
上架不是終點。APP 的特性是使用者手上會同時存在多個版本,所以上線後的流程反而更需要紀律。
第一是版本策略。明確定義哪些屬於修正版本、哪些屬於功能版本,並決定最低支援的系統版本與 APP 版本,避免無限期支援舊版本而讓維護成本失控。
第二是問題回報與熱修機制。原生 APP 的每次更新都要重新送審,因此嚴重問題的修復速度取決於審查。Apple 對確有嚴重問題的案件提供加急審查申請,但那是例外機制,不能當成常態依賴。比較穩健的做法,是在架構設計時就把可能需要臨時調整的內容(公告文案、功能開關、參數設定)改為由後端下發,這樣不必送審就能即時調整。這個決定要在技術選型階段做,事後補會很痛。
第三是監控。閃退率、API 錯誤率、關鍵流程完成率,這三項數據能在使用者抱怨之前先發現問題。沒有監控的 APP,等於要靠客訴當作品質儀表板。
作業系統每年改版一次,這是必然要面對的維運節奏——新版 iOS 或 Android 推出後,介面相容性、權限行為與 API 支援都可能改變。相關的成本結構,同樣可參考前面提到的費用整理。
時程怎麼估才不會失準
估時程最常見的錯誤,是只算「寫程式的天數」。實際上一個專案的日曆時間,還包含業主端的決策時間、設計確認的來回、測試修正的循環,以及審查的等待。
比較務實的估法是分三塊處理。
可控時間是團隊自己能掌握的開發與設計工時,這部分可以靠人力調度壓縮,但壓縮有極限。
協作時間取決於業主端的回覆速度。這部分要在專案啟動時就約定回覆期限,例如設計稿三個工作天內確認、規格疑問兩個工作天內回覆。沒有約定的話,它會是最不可預測的變數。
固定等待時間則是完全壓縮不了的部分,包括 Google Play 新個人帳號的 14 天封閉測試、正式版存取權審查的 7 天,以及每次送審的排隊時間。這些天數應該在排程一開始就先扣掉,而不是最後才發現。
另外要預留返工緩衝。原型驗證做得越紮實,這塊緩衝可以越小;但完全不留緩衝的排程,幾乎沒有例外都會延期。
若專案已經走到要把構想整理成可執行規格的階段,瞻新資訊提供從需求訪談、原型驗證到上架送審的整段流程規劃,可以先從釐清規格範圍與交付物開始談起。
APP 開發流程常見問題
一個 APP 專案從開始到上架大概要多久?
沒有單一答案,取決於功能數量與決策速度。可以確定的是,除了開發工時之外還要加上壓縮不了的固定等待:Google Play 新個人開發者帳號需要 12 位測試者連續測滿 14 天,正式版存取權審查通常再 7 天,Apple 端則平均 90% 的送審在 24 小時內完成審查。排程時把這些先扣掉,再談開發天數會準得多。
規格凍結之後真的完全不能改需求嗎?
可以改,但要走變更流程。凍結的用意不是禁止調整,而是讓每一次變更都有明確的提出方式、核准者,以及對時程與費用的影響評估。台灣專案最常見的糾紛,正是變更的計價方式沒有事先談妥,導致雙方對「這算不算額外工作」認知不同。
做跨平台會不會品質比較差?
不一定,關鍵在功能性質。以資料呈現、表單流程、內容瀏覽為主的 APP,跨平台框架的表現通常足夠。但若需要深度硬體整合、持續高幀率的圖形運算,或要延伸到 CarPlay、watchOS 等周邊平台,原生開發仍有明顯優勢。另一個現實考量是團隊熟悉度:不熟的框架再好,也做不出穩定的成品。
把公司官網包成 APP 送審會過嗎?
大機率不會。Apple 的 App Review Guidelines 準則 4.2 明確要求 APP 必須提供超越「重新包裝網站」的價值,純網頁剪貼、連結集合、行銷素材都在排除範圍內。如果需求本質上就是在行動裝置上瀏覽網頁內容,做好響應式的手機網站會是更合理也更省成本的選擇。
APP 有會員註冊功能,需要特別注意什麼?
必須在 APP 內提供刪除帳號的功能。Apple 準則 5.1.1 第五項規定,只要支援帳號註冊,就要讓使用者能在 APP 內直接刪除帳號,不能要求聯絡客服。此外隱私政策必須同時放在 App Store Connect 與 APP 內,並清楚說明資料蒐集項目、用途,以及第三方 SDK 的處理方式。這些都要在規格階段就納入,不是上架前補得完的。
上架被退件之後要重新排隊嗎?
是的,修正後重新送審會重新進入審查流程。所以第一次送審的準備品質特別重要——依 Apple 官方資料,超過 40% 的未解決問題集中在「App 完整性」,也就是測試帳號、連結、閃退、metadata 這類基本項目。送審前逐項自我檢查,比事後申訴有效率得多,何況每次送審只能申訴一次。
驗收要怎麼做才不會事後爭議?
依規格文件逐條確認,而不是看一次功能展示。正式的做法是進行使用者驗收測試(UAT),由業主端依照當初凍結的功能規格逐項勾稽,並留下簽核紀錄。同時要把異常流程納入驗收範圍,例如斷網、權限被拒、付款失敗時的系統行為,這些正是上線後最容易出事的地方。
開發者帳號要用公司名義還是個人名義申請?
企業專案建議一律用公司或機構名義。除了品牌識別與帳號延續性之外,Google Play 那條「12 位測試者連續 14 天」的封閉測試門檻只適用於個人帳號,用公司帳號可以避開這段硬性等待。申請時要留意登記資料與證件的英文譯名、地址是否一致,資料不符會拖延審核。
流程跑得穩,比跑得快更省錢
回頭看,APP 開發流程裡真正決定成敗的環節,幾乎都不在寫程式那一段。規格有沒有凍結、原型有沒有驗證、測試有沒有涵蓋異常流程、審查條款有沒有在設計階段就納入規格——這些前置工作做足了,開發階段自然順;做不足,省下來的時間會在退件、返工和爭議裡加倍還回去。
對中小企業來說,最值得建立的觀念是:流程不是報價單上用來湊項目的名詞,而是把風險提前暴露出來的工具。每一個檢查點的存在,都是為了讓錯誤在成本最低的時候被發現。當一份專案計畫裡看得到明確的階段、產出物與檢查點,它通常也就比較不容易出事。


