Objective-C

一步一腳印的 iOS App 上架和更新流程

什麼都是假的,只有 App 上架 Store 才是真的。千辛萬苦完成 App 後,下一步、也是最重要的一步,就是把 App 送審上架!為了讓新手都能一次就送審成功,我們已經更新了 iOS App 的詳細上架流程。你的 App 也完成了嗎?快來跟著我們一步步將 App 送審上架吧!
一步一腳印的 iOS App 上架和更新流程
一步一腳印的 iOS App 上架和更新流程
In: Objective-C, Swift 程式語言

什麼都是假的,只有 App 上架 Store 才是真的。畢竟我們都不是吃素的,費了九牛二虎之力,千辛萬苦完成 App 後,只願 Apple 的評審大大能夠慧眼視英雄,讓我們的 App 上架,從此我們可在冰島躺著賺錢,看著天上的極光發呆。

彼得潘彷彿已經看到飛往冰島的機票微笑著跟我們招手,事不宜遲,接下來就讓我們一步一腳印,趕緊來將 App 送審上架吧 !

付費帳號才能將 App 送審上架

天下沒有白吃的午餐,想上架 App,請記得付給 Apple 年費 99 美金,才有資格上架,沒付錢的只能在旁邊玩沙。刷卡付錢的入口在 這裡,請刷 !

在 App Store Connect 建立 App

在將 App 上傳前,我們必須先連到 App Store Connect,設定 App 的相關資訊。

  1. 登入 App Store Connect 網站
  2. 點選我的 App,進入 App 的管理頁面。
  3. 建立 App。
  4. 點選左上角的 + 後,點擊新的 App。

  5. 設定 App 的基本資訊。
  6. 平台: 勾選 App 是 iOS 或 Apple TVOS 的 App。

    名稱: App 在 App Store 顯示的名稱,不能和別人同名,也不能超過 30 個字。當我們輸入的名字已有別人使用時,按下建立將出現錯誤。

    主要語言: App 的主要語言,在此我們選擇繁體中文。我們可為 App 設定不同語言的 App Store 介紹,讓我們的 App 吸引外國的消費者。不過我們當然沒有美國時間一一為每個國家設定不同語言,所以那些沒有被設定的語言,將顯示主要語言設定的內容。

    套裝組 ID: 每個上架的 App,都需要一個 ID 來識別。它就像我們的身份證字號,絕對不能跟別人一樣,否則將天下大亂,太陽從西邊出來。

    點選套裝組 ID 的選擇後,可從清單挑選 Xcode 專案裡設定的 Bundle ID。如果找不到,則可選擇 XC Wildcard – *,在套裝組 ID 後綴輸入 Bundle ID。

    如果選擇 XC Wildcard – *,點選建立完成 App 基本資訊的設定後,Apple 將幫我們在 Certificates, Identifiers & Profiles 網頁生成 App ID。

    有一種特別情況 App ID 會在之前就生成。倘若當初 App 已在 Xcode 打開推播,內購,iCloud 等特別功能,Apple 將在我們打開特別功能的開關時即於 Certificates, Identifiers & Profiles 網頁建立 App ID,並打開它的相關功能。

    SKU: Stock keeping unit,基本上可以是任意字串,只要確保同一個帳號上架的 App,彼此的 SKU 不重覆即可。

  7. 在 App 資訊頁面設定其它資訊。
    • 設定 App 的副標題。
    • 它在 App Store 的呈現將如下圖的 Mesmerizing word game。

    • 設定隱私權政策 URL。
    • Apple 要求上架的 App 都要提供隱私權政策的 URL,如果不想自己花時間製作隱私權政策的網頁,也可參考此篇利用 privacypolicies.com 生成 URL 的教學文章

    • 設定 App 的類別。

    從類別的下拉選單選擇 App 的類別。(次要類別不一定要設定)

    修改後記得點選右上角的儲存。

  8. 設定 App 的價錢。
  9. 切換到定價與供應狀況分頁,從價格的下拉選單選擇價錢。我們希望世界上每個人都能免費看到可愛的單字,所以價錢當然是免費呀。

    一個 App 最貴可以賣到將近台幣三萬元。想碰運氣的可將 App 定價 29900,賭賭是否有人會不小心點到付費。不過也別開心地太早,消費者在 90 天之內還是可以申請退費的!

    關於申請退費的方法,有興趣的朋友可參考此篇教學文章

    不過想銷售付費 App,記得要先到 App Store Connect 的協議、稅務與銀行業務頁面設定銀行帳戶,如此未來 App 賺了大錢,Apple 才能將錢匯到我們的銀行帳戶,實現 30 歲退休的夢想。

    點選下圖的 Request 進行設定。

    關於協議、稅務與銀行業務的相關設定,可參考此篇文章

  10. 設定預購。
  11. 我們可以勾選是否開放預購,讓使用者在 App 上架前就可購買。

  12. 設定 App 上架的國家。
  13. 我們可點擊供應狀況的編輯,設定 App 上架的國家。預設是一視同仁,全世界都上架,就好像我們追求真愛一樣,長髮短髮沒頭髮都可以。不過如果你剛好前女友是日本人,由愛生恨,想將日本排除在外,也是可以的,只要將國家清單裡的日本取消勾選即可一解心頭之恨。

  14. 設定大量採購計劃。
  15. 設定 App 的圖片和影片。
  16. 切換到準備提交分頁,在 App 預覽和螢幕快照區塊,我們可上傳 App 的圖片和影片。

    圖片最多 10 張,格式為 JPG 或 PNG。雖然 iPhone 有多種尺寸,不過我們只需上傳 5.5 吋的截圖,Apple 會貼心地製作成其它尺寸的版本(備註:從 2019/3 開始,我們還需準備 6.5 吋的截圖)。關於如何製作上架所需的截圖,可參考此篇文章

    圖片上傳就像喝水一樣簡單,只要將圖片拖曳到 iPhone 5.5 吋顯示器的灰色長方形區塊即可。

    影片不一定要設定,想要的話可上傳 30 秒內的影片(App 預覽),最多可上傳三個。雖然開發 iOS App 的都是帥哥美女,可惜影片只能拍攝 App 畫面的操作,露臉可是會被 Apple 打槍的 !

  17. 設定行銷宣傳文字和描述。
  18. 行銷宣傳文字和描述是 App 的文字介紹,雖然大部份的使用者都不會看,我們還是要用心用愛好好地寫。

    行銷宣傳文字將出現在描述的上方,如下圖所示,紅色框框區塊是行銷宣傳文字,之後的部分則是描述。

    比起描述,行銷宣傳文字有個好處,它可以隨時修改更新。相反的,App 一旦上架,描述只能等新版送審時更新。

  19. 設定 App 的關鍵字、支援 URL 和行銷 URL。
  20. 關鍵字: 可設定多組關鍵字,以逗號分隔。當使用者在 App Store 搜尋時,將進行關鍵字的比對,列出相關的 App。關鍵字設得好,將可大大增加 App 被搜到的機會。(備註:關鍵字取不好也可能造成 App 送審被拒絕,詳情可參考此篇文章。)

    支援 URL: 支援的網址。當使用者遇到問題或想找我們約會時,可透過此網址聯絡我們。

    行銷 URL: 行銷的網址,此欄位可不填,習慣設為公司的網站。

    如下圖所示,在 App Store 的 App 頁面,App 支援將對應支援 URL,而開發者網站則對應行銷 URL。

  21. 設定 App 版本。
  22. 此版本必須和 Xcode 專案裡設定的 App 版本 (Version) 一致。

  23. 設定 App 的分級。
  24. App 就像電影一樣,需要分級,不然限制級的 App 讓小孩子使用可是會傷害他們純真的心靈。點選分級旁的編輯即可勾選 App 是否包含暴力,色情等元素。我們的可愛單字 App 當然是老少咸宜,通通勾選無,4 歲以上的小朋友即可享用。

  25. 設定版權。
  26. App 就像我們懷胎十月生出的寶寶,當然要設定版權,聲明版權我們所有。

  27. 設定登入資訊。
  28. 有些 App 需要登入才能使用,為了讓偉大的 Apple 評審大大不用麻煩地重新註冊帳號,我們可以提供一組帳號密碼,方便評審測試。

    單字 App 不需要登入即可看到世界上最可愛的單字,所以在此我們取消需要登入的勾選。

  29. 設定聯絡資訊。
  30. 當 Apple 審核 App 發現問題時聯絡的對象。

  31. 設定備註和附件。
  32. 我們可以利用備註的文字說明和附件,幫助 Apple 評審大大們審核我們的 App,比方在附件裡附上 App 藍芽連結硬體的操作影片。

  33. 設定 App 上架的黃道吉日。
  34. 嚴格來說,App 上架的日子不是我們能決定的,因為要先通過 Apple 的審核,就好像追女生要等對方接受告白才算在一起一樣。不過我們卻可控制審核通過後,是否馬上出現在 App Store。若是勾選手動發佈此版本,則表示我們想等審核通過後,再找個黃道吉日讓 App 正式亮相。

  35. 設定多國語言。
  36. 想要 App 行銷全世界嗎 ? 那最好為 App 設計不同語言的文字介紹和截圖,幫助外國人更了解我們的 App。

    點選版本資訊右邊的語言可為 App 新增某個語言的介紹。

    現在大部分需設定的 App 資訊都已填寫好,然而我們還不能送審,因為最重要的東西,我們的單字 App 尚未上傳。接下來就讓我們回到 Xcode,上傳 App 吧。

從 Xcode 上傳 App

設定上架 App 的個人帳號

切換到 App 的 General 頁面,在 Signing 區塊點選 Add Account。

輸入上架帳號的 Apple ID 和密碼。

從 Team 欄位選擇剛剛新增的帳號。

此時 Xcode 將幫我們建立 App 對應的 Provisioning Profile。如果此帳號還沒有 Development certificate,此時也會一併產生。

我們可從 Certificates, Identifiers & Profiles 網頁看到 Xcode 幫我們生成的 Development certificate。

設定專案,完成上傳前的準備

  1. 檢查 App 的 Bundle Identifier 和 Version,務必和 App Store Connect 上設定的一模一樣。
  2. 檢查 Assets.xcassets 裡是否已設定 App Icon 60pt 和 1024pt 的圖片。
  3. 將 App Build 的對象改為 Generic iOS Device。

上傳 App

  1. 點擊 Product > Archive,包裝製作 App。
  2. 點擊右邊藍色閃閃發亮的 Distribute App 按鈕。
  3. 選擇 iOS App Store。
  4. 選擇 Upload。
  5. 接下來的兩個畫面,一般不需做任何調整,點選 Next 即可。

    勾選 Automaticlly manage signing 表示 Xcode 會幫我們自動處理上架 App 需要的 profile,app ID 和 certifcate。

  6. 產生 iOS Distribution certificate。
  7. 上架的 App 需要包含 iOS Distribution certificate,如果之前沒有產生過,請勾選 Generate an iOS Distribution certificate,Xcode 將在此步驟幫我們產生。

    可點選 Export Signing Certificate 輸出剛剛產生的 certificate,將它存在 Mac 裡,方便未來傳到另一台上架 App 的 Mac 使用。

    我們可從 Certificates, Identifiers & Profiles 網頁看到 Xcode 幫我們生成的 Distribution certificate。

  8. 點選 Upload 上傳。
  9. 此時可看到 App 搭配的 Profile 是 iOS Team Store Provisioning Profile。每一個送審上架的 App 都須搭配 Distribution Provisioning Profile,而 iOS Team Store Provisioning Profile 其實是 Xcode 自動幫我們生成,完全不用我們費心。

    正常情況下上傳進度條應可順利跑完,可惜天有不測風雲,此時我們可能等不到它跑完,反而看到以下的錯誤訊息。

    為什麼會有問題呢 ? 錯誤訊息裡提到我們少了 iPad 需要的 App Icon。不過一般我們開發的都是 iPhone App,怎麼會跟 iPad 有關呢 ?

    請切換到 App 的 General 頁面,找到 Devices 欄位。如下圖所示,專案預設為 Universal,表示我們的 App 同時包含 iPhone & iPad 版,所以必須包含 iPad 的 icon 圖片。

    因此我們有兩種解法。我們可補上 iPad 的 icon 圖片,或是將 Devices 改成 iPhone,表示我們開發的是 iPhone App,不需要 iPad 的 icon 圖片。iPhone App 還是可以在 iPad 執行,只是會變成放大顯示,解析度比較差。

    修改後記得重新點選 Xcode menu 的 Product > Archive,包裝製作新的 App 上傳。

  10. App 順利上傳,看到代表成功上傳的綠色大勾勾。

選擇送審的 App

神聖的 App 送審時刻終於來到,此時此刻,我們已成功將 App 上傳 ! 但是故事還沒完,我們得回到 App Store Connect 的單字 App 頁面,將 App 送審。

  1. 切換到活動分頁,看到剛剛上傳的 App。
  2. 就像剛出爐的麵包太燙不能吃一樣,此時 App 顯示(處理中),表示還在處理中,請先去喝個下午茶,聊聊彼得潘的八卦後再回來。

  3. App 結束處理中的狀態。
  4. 不需要手酸地一直重新整理網頁,當 App 結束處理中的狀態時會貼心地寄信通知我們。

    從下圖的建置版本可看到 App 的處理中文字已消失無蹤。

    不過也有另一種可能,Apple 可能在處理 App 時自動檢查到一些問題,於是寄信通知我們,比方如下圖所示,提到 Missing Purpose String in Info.plist File。

    一般這樣的錯誤都和權限有關,因為我們的 App 存取使用者的私密資料,像是照片,GPS 位置等,因此 Apple 要求我們在 Info.plist 加入徵求使用者同意的文字說明。關於這方面的資訊,可參考 Protecting the User’s Privacy

  5. 選擇欲送審的 App。
  6. 有時候我們會做多次修改,上傳多個版本的 App,因此需在此處選擇真正要送審的 App。切換到 App Store 下的準備提交分頁,找到建置版本旁的 + 按鈕,點擊後選擇剛剛上傳的 App。

    此時不只建置版本區塊包含我們選擇的 App,App Store 的圖像也更新為 App 裡包含的 1024pt 圖片。

    最後別忘了點擊右上角的儲存按鈕。

剛剛提到我們可能會上傳多個版本的 App,比方半夜睡覺時夢到可能發生的 bug,趕緊修改程式,重新進行 Product > Archive 的步驟上傳。

不過此時我們可能會看到下圖的錯誤,提到 “Redundant Binary Upload. You’ve already uploaded a build with build number ‘1’ for version number ‘1.0’。

這是什麼意思呢 ? 請打開 App 的 Xcode 專案,切換到 App 的 General 頁面,注意其中的 Version 和 Build 欄位。Version 是使用者看到的 App 版本,但我們在決定真正送審的 App 前,可針對此版本上傳多個 App,以不同的 Build 數字區分。當 Xcode 發現我們產生多個有著同樣 Version 和 Build 數字的 App 時將產生錯誤,因為它無法區分。

Xcode 會檢查 Build 的數字,對同一個 Version 而言,新上傳的 Build 數字一定要大於前一個上傳的數字,否則會產生錯誤。解決的方法很簡單,記得增加 Build 的數字即可。一般而言我們習慣上傳同一個 Version 的 App 時,每次將 Build 加 1,比方上傳 1.0 版的 App 時,我們可能上傳三次,Build 數字依序為 1,2,3。

而當上傳新 Version 的 App,比方 1.1 版時,Build 數字可以重新計算,因此可以從 1 開始。

將 App 送審

點擊右上角的提交以供審查 !

在進一步點擊真正送審的提交前,我們要先完成以下三個欄位的設定。

出口合規資訊: App 是否加密。我們的單字 App 沒有使用任何加密功能,所以勾選否。

內容版權: App 是否包含其它需要版權的第三方內容。我們的單字 App 使用可自由公開的可愛單字,因此勾選否。

廣告識別碼: App 是否使用廣告識別碼 (IDFA)。一般當 App 有廣告時,請勾選是。我們的單字 App 只想帶給大家歡樂,不歡迎廣告,所以勾選否。

送審後,App 的狀態變成正在等待審查。

不再漫長的 App 審核等待

看到正在等待審查,令彼得潘想起胡彥斌的名曲 Waiting for you。令人欣慰的,現在 App 審核的時間比以前快多了,一般只要一兩天即可見真章,揭曉該開心地去冰島看美麗極光慶祝上架,還是該難過地去南極抱企鵝取暖,療癒我們 App 被拒絕退件的玻璃心。

答案揭曉,單字 App 通過審核,狀態成為綠色的銷售準備就緒,看來可以準備買冰島的機票了。

迫不急待地想到 App Store 搜尋小兔英文單字 App 了嗎 ? 別急,雖然 App 狀態是銷售準備就緒,一般還要再經過幾個小時,App 才會真正在 App Store 亮相。所以是時候再去喝個下午茶了,看來 iOS App 開發魔法師真的逃不過天天下午茶的甜蜜宿命。

App 的更新

iOS App 的開發是一輩子的事,所以我們的 App 也要持續更新,加入新的功能,或是修正修不完的 bug。

在 App Store Connect 設定新版 App 的資訊

要如何增加新版的 App 呢? 請進入 App Store Connect 的 App 設定頁面,點選 + 版本或平台來新增版本。

選擇 iOS。

輸入新版本的版號。

從 Xcode 上傳新版 App

從 Xcode 上傳新版 App 的方式和之前一樣,唯一要注意的是記得調整 Version 和 Build 數字。

作者
彼得潘
彼得潘,正職作家,副業講師,深愛 Apple 相關的所有人事物。精通 Swift iOS 程式設計,平日的興趣為桌球,情歌和寫作。除了一天一顆蘋果強身,也努力保持一天研究一項 iOS SDK 技術的習慣。著作: Swift程式設計入門,App 程式設計入門-iPhone,iPad 課程。Line ID: deeplovepeterpan
評論
很好! 你已成功註冊。
歡迎回來! 你已成功登入。
你已成功訂閱 AppCoda 中文版 電子報。
你的連結已失效。
成功! 請檢查你的電子郵件以獲取用於登入的連結。
好! 你的付費資料已更新。
你的付費方式並未更新。