Just My Life & My Work

Posts tagged ‘version’

版本控制之彩色分支

有版本控制系統實在好方便,正常開發事件會有 Feature 和 Bug,兩者可以分別開 Branch 去處理與紀錄。事後回溯,可以透過搜尋關鍵字來找到目標,也能看夥伴做了何種修改,互相砥礪學習。🤓

現在團隊兩個人(阿丹和我都是精英😁),由於我是主導開發方向,也是接收需求的關鍵角色,因此我的注意力會被打散,很常遇到的狀況是開發到一半會被中斷,此時我就會先把該功能推到某 Branch,稍微註解讓我回來時可以參考快速上手。

(繼續閱讀…)

[圖解] APP 一年來發佈趨勢

在公司開發APP已超過一年,這期間進行了相當多任務,包含維護舊功能開發新功能。每隔一段時間(可能是兩週或一個月)就會發佈新版本,並觀察用戶更新後的使用狀況。

在此我要記錄一下APP發佈後,用戶更新採用的比例,APP 一年來發佈趨勢

在iOS的生態系,系統預設會自動更新APP,也就是App Store一旦有新版本,用戶手機系統會悄悄地幫更新版本,少數用戶可能會關掉自動更新功能。所以其實更新會分「自動更新」與「手動更新」。

接下來我們來看快樂印APP自動與手動更新狀況~

上圖是一年來版本用戶採納趨勢圖,可發現約莫半個月會達80%。

(繼續閱讀…)

Facebook數據-用戶活動

我們家App有整合Facebook SDK,所以在後台能搜集到使用者數據,來張貼一下Facebook數據-用戶活動

這是七月份連續28天的數據圖表,突起處表示有進行「推播」,引起用戶們的注意而打開App。

如果有企圖心的話,我會想要每個禮拜都發布新版本。不過為了慎重起見,還是測試完全後再釋出,不然有問題的版本會「名留千史」,導致營收受挫就不好囉~

看著每個版本迭代時的消長,期盼每天都有至少10000人使用我們家App,越多人使用越突顯我的價值:)~

[iOS] 指定Pod版本

四年前(2014年),我已寫過Cocoapods教學:使用 CocoaPods 管理第三方套件,此時要講指定Pod版本。好的第三方套件會時常更新來與時俱進,除了新增feature之外,還有修正既有的bug。

當我們自己開發的App已經過了好幾年,想要再透過Cocospods加入新的套件,此時要考慮到舊有的套件盡可能不要更新,若逼不得已還是得更新啦⋯⋯

使用Cocoapods的好處之一就是可以指定Pod版本。像是我有遇到下一個版本的語法被改掉,太難改的話我就會先返回原先的版本。

(繼續閱讀…)

Swift 第4版本

Swift已經升級到第4版本,我還是沒認真在寫Swift 4,主要是因為它還不太穩定,這幾年必須多花時間去改寫語法到最新版本,於是在有限的開發時間下,我依然對相對穩定的Objective C情有獨鍾XD~

舉一個例子,當我要使用Open Source ChartsXcode會偵測是否相容,否則就無法編譯成功,如圖:

Swift 第4版本.png

好在只要選擇到Swift 4,就能成功編譯!也感謝超好用的圖表開源Charts作者,願意每次Swift升級就改寫語法,造福我們成千上萬的iOS開發者

怎麼在Objective C中使用Swift Open Source?可參考文章:在Objective C專案使用Swift第三方套件

[Xcode] 安裝舊版Xcode

每次更新Xcode版本後,多少會出現一些不預期的狀況,如果時間緊迫的話,建議是先回歸到舊版Xcode來開發。那要如何安裝舊版Xcode?只要透過手動下載,新版和舊版的Xcode還能並存呢~畢竟從App Store下載來的軟體,一更新就無法降回原先的版本。

安裝舊版Xcode.png

Apple Developer軟體下載:Downloads for Apple Developers,要先登入Apple帳號才能進去喔~

剛好有用Cordova開發iOS App的朋友詢問,我在此做個紀錄。通常我會保留前一個版本的Xcode,以防新版Xcode出現問題時,還能轉用舊版Xcode繼續開發。

參考:如何安裝舊版Xcode? 如何在舊版Mac OS

[iOS] 版本號:Version和Build

一個有在更新版本的App,有時候需要判斷版本號,在Xcode中的設定有VersionBuild,有個別的用途,端視開發者怎麼定義。

Xcode Build Number2

那麼程式中如何取得這兩個值?

Version:在plist文件中的key是“CFBundleShortVersionString”,標識應用程序的發布版本號,和AppStore上的版本號保持一致。該版本的版本號是三個分隔的整數組成的字串。第一個整數代表重大修改的版本,比如實現新的功能或是重大變化的修訂。第二個整數表示修訂版本,實現比較突出的特點。第三個整數代表維護版本。

Build:在plist文件中的key是“CFBundleVersion”,標示(發布或者未發布)的內部版本號。這是一個單調增加的字符串,包括一個或者多個分割的整數。

To get App version:

NSString *appVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];

To get Build version:

NSString *buildVersion = [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

儘管有普遍的定義,還是能自己決定怎麼定義版本字串,像Build我就會用當天日期定義。

參考:How can my iphone app detect its own version number?自動更改建置號碼iOS项目中的version和build、。

[iOS] 發佈版本給使用者測試 (Crashlytics Distribution for User Test)

曾經陪我們測試過許多App的平台Testflight,即將在這個月底(2/26)結束營業XD~好啦,其實是被Apple買去,整合到iTunes Connect中,未來可以去嘗試看看。

crashlytics

在此,我要介紹另一個發佈版本給使用者測試平台Crashlytics,它有三大功能:

  1. 回報崩潰事件
  2. 追蹤使用者狀況
  3. 發布版本給使用者測試

過去我很常使用1和2,現在可以來嘗試3。

(繼續閱讀…)

[Git] 設定.gitignore忽略追蹤檔案

Git是個博大精深的好工具,它可以用來管理檔案的版本,不過我們不需要所有功能都學會,只要學習我們所需要的功能即可!現在我需要忽略追蹤檔案,可以怎麼做呢?

Git 設定.gitignore忽略追蹤檔案

 

因為bin和obj兩個資料夾太過肥大,它是由原始碼編譯後產生的衍生檔,檔案大小動輒上百MB,因為可以重新生成,所以沒必要去追蹤。

過去我只會在專案頭目錄push所有檔案,現在想要忽略這兩個資料夾可以這麼做,在終端機輸入:

vi .gitignore

然後我就可以設定.gitignore這個檔案:

3rd Library/AwesomeMenuProject/AwesomeMenuProject/bin

3rd Library/AwesomeMenuProject/AwesomeMenuProject/obj

儲存後關閉,此後再push所有檔案,就會忽略此bin和obj兩個資料夾囉!

參考:[GIT] 設定.gitignore 忽略檔案不被track

[iOS] 版本市佔率 (Version Market Share)

iOS 8釋出已經三個月,我們來看一下現在iOS各版本的市佔率吧!真沒想到,比起Windows各版本市佔率,iOS可是非常快速地讓使用者安心更新!這種無痛升級且能享受更多的功能服務,當然會讓多數人都能夠接受!

iOS 版本市佔率 Version Market Share

2014/12/08由Apple官方統計,iOS 8占有63%iOS 7占有33%最新的兩個iOS版本就占有96%,讓開發者們如我樂觀其成!因為我們只要優先著重在iOS 7以上開發即可,若客戶說想要支援iOS 6,那麼就拿出這一張圓餅圖給他看吧~為了支援不到4%的iOS版本,而多花費時間與金錢在上頭,可不是個明智的選擇呢~

iOS 7以後的扁平化設計,可說是個劃時代的分水嶺,無論是在使用者體驗上,或是在開發者工具上,甚至軟硬體新的功能與服務,都將讓你我引領期盼!期許自己能深入體會研究其中奧妙之處,進而設計出自己他人都愛不釋手的應用軟體:)~

200930更新

2020/6/17,iOS 13市佔92%、iOS 12市佔12%、iOS 11之前版本則市佔2%。

2020 iOS and iPadOS Usage

此外,參考我正在做的快樂印App,是透過Facebook SDK而來的統計,在開發者後台就能查詢。

2020/9/30最新版本iOS 14有6.72%。至於iOS 10以下版本,可以考慮不要支援,畢竟用戶數非常少,若維護成本過高,就割捨掉吧!

不過我想,還在使用iOS 10以前版本的手機,應該也跑不太動現在我們的快樂印App吧~

快樂印 Facebook 2020 iOS and iPadOS Usage

mixpanel iOS 14

參考:App開發前要考量的首要關鍵數值 -「iOS版本市佔率」Apple Developer Support

標籤雲