學習 IOS 開發也有一段時間了,但卻一直沒有對工程中的 Info.plist 文件作挖掘。今天主要針對此文件作一下詳細分析。
建立一個工程後,會在Supporting files下面看到一個”工程名-Info.plist”的文件,這個是對工程做一些運行期配置的文件,很重要,不能刪除。如果使用文本編輯器打開這個文件,會發現這是一個XML格式的文本文件,一般我們不用文本編輯器直接編輯這個文件,而是通過Xcode編輯。
文件示例圖(比較常用的幾個選項用紅色矩形框標識):
下面對部分常用選項作分析解釋:
Localiztion native development region —— 本地化相關,如果用戶所在地沒有相應的語言資源,則用這個key的value來作為默認。
Bundle identifier —— 軟件的唯一標識字符串,如果使用模擬器跑應用,這個字段沒有用處,如果需要把應用部署到設備上,必須生成一個證書,而在生成證書的時候,在 apple 的網站上需要增加相應的 app IDs. 這裡有一個字段 Bundle identifier,如果這個Bundle identifier 是一個完整字符串,那麼文件中的這個字段必須和後者完全相同,如果 app IDs 中的字段含有通配符*,那麼文件中的字符串必須符合後者的描述。
該標識符的另外一個比較常見的用處是輔助系統後台的推送機制。舉個例子,有時候手機的 QQ 和微信並沒有打開,但卻也能接收到消息推送,此處便是標識符的功勞,系統通過識別標識符而得知准確的應用推送對象,不會說把 QQ 消息推送到微信端。
Bundle versions string, short —— 應用程序的版本號(面向用戶市場)。
Bundle version**重點內容** —— 編譯版本號。
Application require iPhone environment —— 用於指示程序包是否只能運行在iPhone OS 系統上。Xcode自動加入這個鍵,並將它的值設置為true。不應該改變這個鍵的值。
supported interface orientations —— 程序默認支持的方向。
在 Info.plist 文件中修改部分選項可能不是很方便,實際上,還有一個可視化界面可供選擇修改——工程文件首頁。
如下圖所示:
在這個界面就能夠更直觀地去修改部分選項,這裡面的選項大多數都可以與 Info.plist 文件對應。
下面以獲取軟件版本信息為例,說說 Info.plist 文件的讀取操作:
方法一:
// File:獲取文件的全路徑 —— 文件在哪(主bundle) NSString *filePath = [[NSBundle mainBundle] pathForResource:@"Info.plist" ofType:nil]; // 1. 解析 Info.plist NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:filePath]; // 2.獲取當前的版本號 NSString *Version = dict[@"CFBundleShortVersionString"]; NSLog(@"%@",Version);
方法二:
NSString Version = [NSBundle mainBundle].infoDictionary[@"CFBundleShortVersionString"]; NSLog(@"%@",Version);
由此可見,方法二實現起來更方便,實際上是對方法一的封裝。