[iOS] App 預設語言 (App Default Language)
我App中有三個Localization,分別是:
- 繁體中文
- 簡體中文
- 英文
使用者可以在這三個隨意切換,來顯示他想要的語言介面。
三年前已有實現過多國語言化的預設語言 (Default (Fallback) Language of Localization),不過那篇文章我是有寫code,這次只要調整專案中的Info.plist即可!
調整過後,我切換到日語(SIM字眼旁是日文),App介面語言是英文喔~
我App中有三個Localization,分別是:
使用者可以在這三個隨意切換,來顯示他想要的語言介面。
三年前已有實現過多國語言化的預設語言 (Default (Fallback) Language of Localization),不過那篇文章我是有寫code,這次只要調整專案中的Info.plist即可!
調整過後,我切換到日語(SIM字眼旁是日文),App介面語言是英文喔~
每次更新Xcode版本後,多少會出現一些不預期的狀況,如果時間緊迫的話,建議是先回歸到舊版Xcode來開發。那要如何安裝舊版Xcode?只要透過手動下載,新版和舊版的Xcode還能並存呢~畢竟從App Store下載來的軟體,一更新就無法降回原先的版本。
Apple Developer軟體下載:Downloads for Apple Developers,要先登入Apple帳號才能進去喔~
剛好有用Cordova開發iOS App的朋友詢問,我在此做個紀錄。通常我會保留前一個版本的Xcode,以防新版Xcode出現問題時,還能轉用舊版Xcode繼續開發。
正在開發跨國使用的iOS App,所以App名稱最好也能跟著變更,來讓當地使用者看到App名稱更輕易地辨識。
![[iOS] 支援多語系 App 名稱1](https://cg2010studio.com/wp-content/uploads/2017/11/ios-e694afe68fb4e5a49ae8aa9ee7b3bb-app-e5908de7a8b11.png?w=540)
可以見到我的Info.plist檔中有五處是中文字,想要多國語言化可以怎麼做?其實也跟幾年前我寫的多國語言化很類似,參考文章:多國語系 (Localization)。
2015年有介紹過位元代碼 (Bitcode),儘管沒有很關注它的發展,偶爾卻會在編譯的時候有Bitcode問題。
編譯後出現錯誤訊息:
Invalid bitcode signature
已經刪除暫存檔(Derived Data),和關閉啟用Bitcode,還是無法解決此問題。最後上網搜尋前人經驗,才發現可以透過Build Active Architecture Only設為Yes,就能成功編譯!
想起Debug時就有調整設定過,沒想到Release又遇到同樣的坑,所以這次就記錄一下吧!然後就要把版本發給老大測試囉~
台灣時間9/13凌晨1點,Apple的特別活動就是發表最新的iPhone,這一次同時發布三支iPhone:iPhone 8、iPhone 8 Plus、iPhone X。
到公司後,立馬下載Xcode 9 GM,來體驗iPhone X 模擬器的呈現效果。就以我最近正在開發的自製遊戲-抓神魔獸為例。
遇到一個棘手的問題,原以為重開筆電或手機就可以解決,沒想到會需要點技巧!
想透過iTunes存取iPhone,但是出現以下訊息:
iTunes could not connect to this iPhone. Could not allocate a resource.
想透過Xcode編譯App安裝到iPhone上,不過出現如下訊息:
Your iPhone is not available. Please select a different device and try again.
有時候同一個專案(Project)需要建立不同的目標(Target),因為可以各自設定屬性狀態,讓code可以依據釋出版(Release)或開發版(Debug)來運作。

此時若有使用Cocoapods來管理第三方套件,
一個有在更新版本的App,有時候需要判斷版本號,在Xcode中的設定有Version和Build,有個別的用途,端視開發者怎麼定義。

那麼程式中如何取得這兩個值?
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、。
HappyMan・迴響