上架

在過去七年時間裏,咱們的團隊建立了無數iOS應用。在這個過程當中咱們不斷改善咱們的開發流程。把最佳實踐應用到咱們發佈的新應用中。html

咱們已經準備好了兩張覈對清單。一個是關於如何開始一個iOS項目,一個是關於如何將應用提交到AppStore。ios

這些清單的流程使咱們團隊更高效,構建更好的解決方案,減小開發時間和提交到AppStore的風險。git

我但願這些清單對大家一樣有用。github

####開始一個iOS項目數據庫

  • Repo/Github服務器

    1 在Github上建立一個倉庫,把 iOS gitignore 文件添加進去。網絡

    2 嚴格按照git-flow workflow流程進行開發,master分支用於你的產品發佈,dev分支用於保持最新的代碼,feature分支用於當前工做進度。app

  • Xcode框架

    1 確保團隊中的每一個人使用同一個版本的Xcode。ide

    2 在Xcode target的」Build Settings」裏打開」Analyze during build」和 「Treat Warnings as Errors」選項。

    3 關閉tabs並開啓空格鍵: XCode > Preferences > Text Editing > Indentation > Prefer Indent using Spaces, Tab width 2, Indent width 2

  • Jenkins/OSX Server/TestFlight

    設置 CI/CD(持續集成/持續部署) 確保每次推送到dev分支的全部測試用例都會執行一遍,同時會構建一個Ad Hoc版本並以郵件形式發送到團隊的每一個成員(郵件內容是commit的log信息)。若是構建或者測試失敗,一封構建失敗的郵件也會發給團隊成員。在Originate,大部分iOS項目都使用OSX Server集成TestFlight功能。

  • 編碼風格/規範

    1 遵循蘋果官方的建議 iOS coding style guide

    2 此外,遵循這裏的建議:http://qualitycoding.org/preprocessor/

    3 保持你的.h文件簡潔。只暴露必要的接口給外界,把其餘屬性、方法、聲明等放到.m文件

    4 根據當前顯示的頁面給ViewController命名。(e.g. LoginViewController)

    5 使用分組(Group)組織你的項目。好的分組應該是這樣的:DataModels,Views,Controllers,App Delegate,Supporting Files,Tools等,混亂的項目結構是不能容忍的。

    6 在提交pull request以前,首先過一遍effective code review

  • 框架

    1 MVC(Model View Controller)有時候在iOS開發中會被戲稱爲Massive View Controller。對於初學者而言,把全部事情都交給massive controllers是一個很常見的錯誤。根據需求,咱們應該把tableview相關的delegates/data sources從view controller中抽離成獨立的類。把view(尤爲是須要複用的)也抽離成單獨的類。把controller中用到的工具性方法放到單獨的helper類中去。此外,viewController不該該直接進行網路請求的操做,而應該交給Model或者Manager類去處理。

    2 一些好的code/tutorials/patterns: Lighter View ControllersViper andBrowseOverflow (from the iOS TDD book).

  • Views/Nibs/Storyboards

    1 確保在視圖中使用constraints/autolayout來適配不一樣的屏幕。不然只能手動爲每一個view設置frame sizes/positions來確保不一樣屏幕都正常顯示。PureLayoutFLKAutoLayout已經在咱們的一些項目裏使用了。

    2 考慮要不要使用Nib文件。Originatge建議不要使用,但決定權應該交給Tech Lead。不建議使用Storyboard是由於對於多人開發很不友好,使Xcode變得遲緩,給寫代碼增長了沒必要要的複雜度。

    3 若是須要的話,使用FrameAccessor來修改frame,這將很容易設置UIView的大小和起始座標。

  • 字體和顏色

    對整個app進行字體和顏色標準化,這樣就很容易維護和修改它們,而且可使代碼看起來更整潔。

  • 文字顯示

    1 全部顯示到界面的字符串都要放到一個本地化文件(localization file)中。

    2 避免使用包含文本的image assets,使用UILabel替換之。

  • 分析

    http://replay.io/ 是咱們在Originate使用的分析平臺

  • 崩潰報告

    儘管蘋果官方的iTunes Connect已經提供了相關功能,可是最好仍是使用第三方的工具好比Crashlytics。它們很高效而且有一個更友好的界面。

  • 若是須要,增長 AOP的支持(e.g. for logging)。

  • 第三方代碼依賴

    Cocoapods是個不錯的選擇。

  • 服務器通訊

    1 在應用的設置中增長toggle between server environments (e.g. QA, dev, staging, etc.)

    2 若是須要,實現一個app更新通知系統,這樣服務器能夠通知app有一個新的可用版本,app能夠給用戶展現相關更新提醒。

    3 在向服務器請求數據的時候,確保使用一個等待提示控件。咱們在開發的時候用到了MRProgress

    4 在網絡請求中應該使用AFNetworking或者RestKit(if Core Data is needed)。網絡優化/配置請看這篇博客:AFNetworking cache

    5 調試工程中,確保全部服務器信息都打印到控制檯

    注意:使用 DLog 來打印全部的請求和響應(in debug mode)

    #ifdef DEBUG
    #define DLog(fmt, ...) NSLog((@"%s [Line %d] " fmt), __PRETTY_FUNCTION__, __LINE__, ##__VA_ARGS__);
    #else
    #define DLog(...);
    #endif
  • 完善細節

細節的調整對於app來講是相當重要的。好比增長一些用戶特別期待的特性好比:下拉刷新,點擊狀態欄滑到開頭,請求數據的時候顯示等待提示框等使你的app更友好。你的設計團隊和產品團隊應該有一個很高的水準。iOS Human Interface Guidelines是一個不錯的參考。

最後,在開始以前,確保建立必須的帳號(e.g. iTunes Connect, Urban Airship, Analytics Accounts, etc.)

####提交app到AppStore

發佈app到AppStore不容忽視。咱們必須按照蘋果官方的指南一步一步進行以確保你的app可以順利發佈到AppStore。咱們須要花費4~8個小時來執行這些步驟。

當你的app已經準備好了,按照下面步驟:

注意:咱們發現開發者們常常忘記添加content flaging到那些建立用戶生成數據的app中。蘋果會拒絕這樣的app,直到你把content flaging添加進去。

  • Core Data

若是你的app中使用了CoreData,當你提交一個更新版本時,你必須確保寫了一個遷移腳原本完成你的數據庫升級。若是沒有這樣作,你的app在升級以後極可能會崩潰,用戶只能刪掉以後從新安裝。請參考Core Data Model Versioning and Data Migration

  • App評論窗口

當你想讓你的應用程序被用戶評論,UAAppReviewManager能夠確保使你的app在合適的時間被用戶評論。

  • 發佈方案

在Xcode的」Edit Scheme」選項,「Archive」應該設置成「Release」。這樣能夠隱藏log輸出並關掉全部在開發階段的測試用例

注意:因爲編譯器的優化設置,發佈構建有時候與調試構建會有所不一樣。因此最好在發佈到AppStore前幾天就開始測試發佈構建來捕獲一些潛在的問題。

  • 服務器

請將你的發佈版本構建在生產服務器上

  • 發佈候選配置 Ad Hoc builds / App Store build

確保使用正確的Bundle Identifier, Apple ID, certificates (e.g. Push Certificates)等做爲發佈的候選配置和AppStore構建。

  • 檢查Release版的候選配置

    1 確保你的app與正確的生產服務器進行通訊。

    2 確保全部的測試窗口是隱藏的

    3 確保沒有敏感數據打印到控制檯

    4 確保第三方分析工具好比Analytics工做在正確的生產帳號上。

    5 確保第三方服務好比Urban Airship工做在正確的生產帳號上。

  • 推送到主分支

    1 在app的plist文件更新你的bundle version number。這個數字能夠跟你在appStore裏設置的版本號不一致,但最好仍是設成同樣的。

    2 推送你的代碼到主分支並打上tag。

  • 在iTunes Connect上設置你的app

    1 在iTunes Connect建立一個新的app,若是是升級的話,選「Add Version」

    2 確保填滿全部信息並上傳全部必要的圖片(或者視頻)

注意:只有「Description」 和 「What’s New In This Version」能夠修改一旦你的app審覈經過。其餘的選項好比圖片是不能修改的。

  • 提交

使用Xcode來構建你的最終版本就上傳到iTunes Connect。

相關文章
相關標籤/搜索