Info.plist 用於向 iOS 提供關於 app , bundle 或者 framework 的一些重要信息。它指定了比如一個應用應該怎樣啟動,它如何被本地化,應用的名稱,要顯示的圖標,還有更多。 Info.plist 文件實際上是蘋果預定義 schema 的 XML 文件。
為了構建一個設備相關的健,你在健的后面要加上 ~iphone 或者 ~ipad 。
常用字段:
1. 獲取版本信息:
NSDictionary*infoDic = [[NSBundle mainBundle] infoDictionary];
NSString *localVersion = [infoDic objectForKey: @"CFBundleShortVersionString" ];
2 . 應用支持 http 網絡請求 :
在 Info.plist 中添加 NSAppTransportSecurity 類型 Dictionary 。 在 NSAppTransportSecurity 下添加 NSAllowsArbitraryLoads 類型 Boolean , 值設為 YES
注意類型 NSAppTransportSecurity 為 Dictionary , NSAllowsArbitraryLoads 為 Boolean ,復制粘貼的時候,不要多了空格, segment fault 頁面上直接復制,經常會多一個出空格!
控制應用的名稱:
表A-1 控制應用的名稱
| 字段 |
類型 |
是否必須 |
摘要 |
| CFBundleName |
String | Yes |
bundle的簡稱, 這個健指定了你的應用的名稱 |
| CFBundleDisplayName | String | No |
本地化的bundle名, 本地化,可以通過 InfoPlist.strings 文件來為每個語言指定一個合適的值 |
CFBundleDisplayName
CFBundleDisplayName 字段指定了一個字符串值來標識 bundle 的顯示名稱。 Finder 和其他用戶界面組件會把它顯示給用戶。這個名 稱可以與文件系統中的 bundle 名不同。通過把字段加入適當的 .lproj 子目錄中的 InfoPlist.strings 文件,就可以實現該字段的本地 化。如果您需要本地化這個字段,您還應該提供一個 CFBundleName 字段的本地化版本。
CFBundleName
CFBundleName 指定了該 bundle 的簡稱。簡稱應該小於 16 個字符並且適合在菜單和 “ 關於 ” 中顯示。通過把它加入到適當的 .lproj 子文件 夾下的 InfoPlist.strings 文件中,該字段可以被本地化。如果您本地化了該字段,那您也應該提供一個 CFBundleDisplayName 字段的本地化版本。
應用標識+應用版本:
表A-2應用標識+應用版本
| 字段 |
類型 |
是否必須 |
摘要 |
| CFBundleIdentifier |
String | YES |
該bundle的唯一標識字符串。該字符串的格式類似java包的命名方式,例如:com.apple.myapp。 |
| CFBundleShortVersionString |
String |
YES |
這個值是一個字符串,用來指定你在 APP Store 上面看的的版本號,這個值必須在每一次 App Store 發布版本中遞增 |
| CFBundleVersion |
String |
YES |
可執行文件的創建號, 這個健的值是一個證書,你可以在每一次發布時增加它。 |
CFBundleIdentifier
CFBundleIdentifier 字段指定了 bundle 的一個唯一的標識字符串。該標識符采用了類似 Java 包的命名方式,例如 com.apple.myapp 。該 bundle 標識符可以在運行時定位 bundle 。預置系統使用這個字符串來唯一地標識每個應用程序。
它包含一個唯一標識的字符串,它是從你在 iOS Provisioning Portal 創建的 App ID取得的 App ID 包含兩個部分: Team ID 和 Bundle ID
CFBundleShortVersionString
CFBundleShortVersionString 字段指定了 bundle 的版本號。一般包含該 bundle 的主、次版本號。這個字符串的格式通常是 “n.n.n” ( n 表示某個數字)。第一個數字是bundle 的主要版本號,另兩個是次要版本號。該字段的值會被顯示在 Cocoa 應用程序的關於對話框 中。
該字段不同於 CFBundleVersion ,它指定了一個特殊的創建號。而 CFBundleShortVersionString 的值描述了一種更加正式的並且不隨每一次創建而改變的版本號。
CFBundleVersion
CFBundleVersion 字段指定了一個字符串用來標識創建號。該字段的值通常隨每一次創建而改變,並且會被顯示在 Cocoa” 關於 ” 對話框中的擴號里。
為了指定一個發布版的 bundle 的版本信息,可以使用 CFBundleShortVersionString字段。參見 “CFBundleShortVersionString” 。
獲取用戶權限信息:
用來訪問用戶信息的 Reason strings iOS6 中需要從用戶那里得到授權的數據
//Calendars,Contacts Location,Photos,Reminders
表A-3 獲取用戶權限信息
| 字段 |
類型 |
是否必須 |
摘要 |
| NSCalendarsUsageDescription |
String |
No | 當應用第一次視圖訪問用戶的日歷的時候,會出現一個彈出框來向用戶請求權限。如果你對這個鍵設置了一個值,那么這個值將會顯示在彈出框中 |
| NSContactsUsageDescription |
String |
No |
應用第一次嘗試訪問用戶的通訊錄的時候,會出現一個彈出框申請權限。就像是前一個鍵,你對這個鍵指定的值,將會顯示在彈出框中 |
| NSPhotoLibraryUsageDescription |
String |
No |
同上,照片 |
| NSRemindersUsageDescription |
String |
No |
同上,備忘錄 |
| NSLocationUsageDescription |
String | No |
同上,位置信息 |
應用圖標:
表A-4 應用圖標
| 字段 |
類型 |
是否必須 |
摘要 |
| CFBundleIconFile |
String | No |
圖標文件的文件名- 在 3.2 版本被廢棄 |
| UIPrerendered Icon |
Boolean |
No |
這個鍵自從第一個 iOS SDK就有了,它告訴 iOS 是否給你應用的圖標添加光照效果 |
| CFBundleIconFiles |
Array | No | 這個鍵的引入,是用來處理在 iPad 和 retina 屏幕的出現時,所需圖標數量的增長的。這個健的值應該是一個字符串數組 - 在 5.0 版本被廢棄 CFBundleExecutable |
| CFBundleIcons |
NSDictionary |
No |
這個健是 iOS 5.0 增加的,可以讓開發者指定 Newsstand圖標和普通應用的圖標 |
CFBundleIconFile
CFBundleIconFile 字段指定了包含該 bundle 圖標的文件。您給出的文件名不需要包含 “.icns” 擴展名。 Finder 會在該 bundle 的 “Resource” 文件夾內尋找圖標文件。
如果您的 bundle 使用了自定義的圖標,那您就必須指定該屬性。假如您沒有指定,Finder (和其他應用程序)會使用缺省的圖標來顯示您的 bundle 。
控制應用初始化啟動:
表A-5 控制應用初始化啟動
| 字段 |
類型 |
是否必須 |
摘要 |
| UILaunchImageFile |
String |
No |
啟動圖片 |
| NSMainNibFile |
String |
No |
應用程序的主nib文件名, 如果你用 NIB 的話,這個就是一個很重要的鍵。它指定了當你應用啟動的時候,用於創建初始化窗口和相關對象的 NIB 文件 |
| UIMainStoryboardFile |
String |
No |
如果你用 Storyboard 的話,這是一個很重要的鍵。它指定可一個 storyboard 文件,用於在應用啟動的時候創建初始界面 |
NSMainNibFile
NSMainNibFile 字段包含了一個含有應用程序的主 nib 文件名(不包含 .nib 文件擴展名)的字符串。一個 nib 文件作為一個 Interface Builder 的存檔文件,含有對用戶界面的詳細描述信息以及那些界面中的對象之間的關聯信息。當應用程序被啟動時,主 nib 文件會被自動裝載。 Mac OS X 會尋找與應用程序名相匹配的 nib 文件。
用戶界面:
表A-6 用戶界面
| 字段 |
類型 |
是否必須 |
摘要 |
| UISupportedInterfaceOrientations |
Array |
No | 這個鍵的值是一個你應用支持的屏幕方向的數組 |
| UIInterfaceOrientation |
String |
No |
如果你的應用值支持一個方向,那么你應該設置這個鍵。它保證在你應用啟動的時候,狀態欄在正確的方向,而不是啟動的時候在一個方向,然后又通過動畫移動到另外一個方向。 |
| UIStatusBarStyle |
String |
No |
設置應用啟動時狀態欄的初始風格 |
| UIStatusBarHidden |
BOOL |
No |
這個鍵表示,在應用啟動的時候,狀態欄是否隱藏。 |
| UIStatusBarTintParameters |
NSDictionary |
No |
狀態欄可以進行一些美化 |
UISupportedInterfaceOrientations
這個鍵的值是一個你應用支持的屏幕方向的數組。可用選項有:
UIInterfaceOrientationPortrait : Home 鍵在下方的豎屏模式
UIInterfaceOrientationPortraitUpsideDown : Home 鍵在上方的豎屏模式
UIInterfaceOrientationLandscapeLeft : Home 鍵在左方的豎屏模式
UIInterfaceOrientationLandscapeRight : Home 鍵在右方的豎屏模式
UIStatusBarStyle
這個鍵設置應用啟動時狀態欄的初始風格。 UIStatusBarStyle 的枚舉值:
UIStatusBarStyleDefault 、 UIStatusBarStyleBlackTranslucent 、
UIStatusBarStyleBalackOpaque
UIStatusBarTintParameters
在 iOS6 中狀態欄可以進行一些美化 , 在這個字典中又四個鍵:
Style :表示導航條的 barStyle 屬性
Translucent :表示導航條的 translucent 屬性
TintColor :這個指定了導航條的修飾顏色。
groundImage :如果你的導航條有背景圖片,那么在這里把圖片的文件名寫上。
應用控制:
表A-7 應用控制
| 字段 |
類型 |
是否必須 |
摘要 |
| UIRequiredDeviceCapabilities |
Array/Dictionary |
No | 它能讓你指定設備必須要有的特性,或者設備必須不能有的特性 |
| UIBackgroundModes |
Array |
No |
當你需要你的應用在后台運行時,就需要這個后台模式,數組里包含應用需要的所有后台模式 |
| MKDirectionsApplicationSupportedModes |
Array | No |
這個iOS6新增加的一個鍵。它允許你為特定的區域和交通模式指定你的應用的路由信息 |
| UIDeviceFamily |
Number/Array |
No |
Xcode自動添加這個鍵,所以你不需要自己添加。它表示應用支持哪些設備 CFBundleGetInfoHTML |
| UIAppFonts |
Array |
No |
如果你需要額外的字體。這個鍵可以為你的應用添加非標准的字體 |
| UIApplicationExitsOnSuspend |
Boolean |
No |
如果這個鍵設置為 true ,那么應用將會直接中斷,而不是切換到后台 |
| UIFileSharingEnabled |
Boolean |
No |
如果你希望用戶能用iTunes的文件共享功能將文件從你的應用的document目錄傳入或傳出,那么你需要設置這個鍵的值為 true |
| UINewsstandApp |
Boolean |
No |
如果 你的應用時Newsstand類型的,那么你應該將這個鍵設置為 true |
| UIRequiresPersistentWiFi |
Boolean |
No |
iOS在默認情況下,如果設備30 分鍾沒有活動,它就會關閉WiFi連接。如果你設置這個鍵的值為 true ,那么這個行為會被覆蓋,只要你的應用是打開的,網絡連接就不會關閉 |
| UISupportedExternalAccessoryProtocols |
Array |
No |
這個鍵指定了和附加的硬件設備通訊的協議 |
UIBackgroundModes
當你需要你的應用在后台運行時,就需要這個后台模式 , 數組里包含應用需要的所有后台模式,可以從以下幾個值里面 選擇: audio :使用音頻框架來播放或者錄制音頻 location :需要在后台訪問用戶的位置信息 voip :這個應用支持 IP 語音,需要在后台進行 Internet 連接和音頻播放 newsstand-content :使用 Newsstand API 在后台下載並處理內容,這允許當一個代表有新的可用發布的推送 發進來的時候喚醒應用 external-accessory :使用 External Accessory 框架來和外部的設備驚醒通訊
bluetooth-central :使用 CoreBluetooth 框架和外部設備進行通訊
高級視圖控制:
表A-8 高級視圖控制
| 字段 |
類型 |
是否必須 |
摘要 |
| UIViewEdgeAntialiasing |
Boolean |
No |
默認情況下,你的視圖被 iOS 的渲染系統繪制,不包括反鋸齒功能。這是因為不是用反鋸齒運行速度會快很多 |
| UIViewGroupOpacity |
Boolean |
No |
當你設置了視圖的透明度,它所有的子視圖都被渲染成同樣的透明度,但會在它后面被渲染 |
Core OS **** 以下為系統自動修改,無需手動修改****:
表A-9 Core OS
| 字段 |
類型 |
是否必須 |
摘要 |
| LSRequiresIPhoneOS |
Boolean |
No | 這個鍵時 iOS 應用運行在設備上面必須的,並且它的值必須時 true |
| CFBundlePackageType |
String |
No |
用來標識bundle類型的四個字母長的代碼( 在 iOS 中,你至處理應用,但在 Mac 中, Info.plst 還可以引用其他類型的項目 ) |
| CFBundleInfoDictionaryVersion |
String |
Yes |
Info.plist格式的版本信息, Info.plst 的結構很可能會隨着時間改變,那么就需要告訴操作系統,當前這個文件對應的版本是什么。 |
| CFBundleExecutable |
String |
Yes |
該bundle的可執行文件名, iOS 中的應用會被打包成 .app 文件。在這個文件中包含了所有的資源,並且還有一個可執行文件。這個鍵時一個字符串,用來指定可執行文件的名稱。 |
| CFBundleSignature |
String | Yes |
用來標識創建者的四個字母長的代碼, 這個鍵和 Mac 有關,和 iOS 沒有特別的關系。 |
CFBundlePackageType
CFBundlePackageType 字段指定了 bundle 的類型,類似於 Mac OS 9 的文件類型代碼。該字段的值包含一個四個字母長的代碼。應用程序的代碼是 ‘APPL’ ;框架的代碼是 ‘FMWK’ ;可裝載 bundle 的代碼是 ‘BND’ 。如果您需要,您也可以為可裝載 bundle 選擇其他特殊的類型代碼。
CFBundleInfoDictionaryVersion
CFBundleInfoDictionaryVersion 字段指定了屬性列表結構的當前版本號。該字段的存在使得可以支持 Info.plist 格式將來的版本。在您建立一個 bundle 時, Project Builder 會自動產生該字段。
CFBundleExcutable
CFBundleExecutable 標識了 bundle 的可執行主文件的名稱。對於一個應用程序來說 , 就是該應用程序的可執行文件。對於一個可加載 bundle, 它是一個可以被 bundle動態加載的二進制文件。對於一個框架,它是一個共享庫。 Project Builder 會自動把該字段加入到合適項目的 Info.plist 文件中。 對於框架,考慮到啟動效率的原因,可執行文件名需要和框架名同名。該可執行文件名不應該包含可用於多種平台的擴展名。
注意您必須在 bundle 的 Info.plist 文件中包含一個有效的 CFBundleExecutable 字段。即使當用戶重命名應用程序或 bundle 的目錄時, Mac OS X 也可以使用這個字段來定位可執行文件和共享庫。
CFBundleSignature
CFBundleSignature 字段指定了 bundle 的創建者,類似於 Mac OS 9 中的文件創建者代碼。該字段的值包含四字母長的代碼,用來確定每一個 bundle 。
本地化:
表A-10 本地化
| 字段 |
類型 |
是否必須 |
摘要 |
| CFBundleLocalizations |
Array |
No |
系統通過查找你應用提供的 Iproj 目錄來決定你的應用支持哪些語言地區。這個鍵的值是一個字符串數組,數組中的每一個值都代表支持的地區 |
| CFBundleDevelopmentRegion |
String | No |
當你開發你的應用的時候,你通常會使用你本地的語言來寫它。這個鍵的值是一個字符串,如果用戶請求的區域沒有 必須的資源的話,它用來表示默認的本地化區域 |
自定義URL和文檔類型:
表A-11 自定義URL和文檔類型
| 字段 |
類型 |
是否必須 |
摘要 |
| CFBundleURLTypes |
Array |
No |
一組描述了該bundle所支持的URL協議的字典。 這個鍵可以讓你指定一個你的應用支持的 URL 的一個數組 |
| CFBundleDocumentTypes |
Array |
No |
一組描述了該bundle所支持的文檔類型的字典。 這個鍵可以讓你指定你的應用可以處理哪種類型的文檔 , 這個數組中的值都是一個字典 |
| UIImportedTypeDeclarations |
Array | No | 為了允許你的應用打開那些不屬於它的類型,你需要導入那個 UTI ,並且這個時你要用到的鍵 |
CFBundleURLTypes
CFBundleURLTypes 字段包含了一組描述了應用程序所支持的 URL 協議的字典。它的用途類似於 CFBundleDocumentTypes 的 作用,但它描述了 URL 協議而不是文檔類型。每一個字典條目對應一個單獨的 URL 協議, 每一個都代表你應用支持的一種 URL 規則。表 A-11-1 列出了在每一個字典條目中使用的字段。
表A-11-1 CFBundleURLTypes字典的字段
| 字段 |
類型 |
描述 |
| CFBundleTypeRole | String | 該字段定義了那些與 URL 類型有關的應用程序的角色(即該應用程序與某種文檔類型的關系)。它的值可以是 Editer , Viewer , Printer , Shell或 None 。有關這些值的詳細描述可以參見 “ 文檔的配置 ” 。該字段是必須的。( 當打開這個 URL 時你的應用所扮演的角色) |
| CFBundleURLIconFile | String | 該字段包含了被用於這種 URL 類型的圖標文件名(不包括擴展名)字符串。( 指定對這種 URL 所使用的圖標的文件名) |
| CFBundleURLName | String | 該字段包含了這種 URL 類型的抽象名稱字符串。為了確保唯一性,建議您使用 Java 包方式的命名法則。這個名字作為一個字段也會在 InfoPlist.strings 文件中出現,用來提供該類型名的可讀性版本。( 這應該時一個唯一的字符串,用來區分不同的URL 類型) |
| CFBundleURLSchemes | Array | 該字段包含了一組可被這種類型處理的 URL 協議。例如: http,ftp 等。( 字符串數組,每一個元素代表這個規則支持的 URL ) |
CFBundleDocumentTypes
CFBundleDocumentTypes 字段保存了一組字典,它包含了該應用程序所支持的文檔類型。每一個字典都被稱做類型定義字典,並且包含了用於定義文檔類型的字段。 表 A-11- 2 列 出了類型定義字典中支持的字段。
表 A-11-2 CFBundleDocumentTypes字典的字段
| 字段 |
類型 |
描述 |
| CFBundleTypeExtensions | Array | 該字段包含了一組映射到這個類型的文件擴展名。為了打開具有任何擴展名的文檔,可以用單個星號 “*” 。該字段是必須的。 |
| CFBundleTypeIconFile | String |
圖標文件的數組,該字段指定了系統顯示該類文檔時使用的圖標文件名,該圖標文件名的擴展名是可選的。如果沒有擴展名,系統會根據平台指定一個(例如, Mac OS 9 中的 .icons )。 |
| CFBundleTypeName | String | 該字段包含了這種文檔類型的抽象名稱。通過在適當的 InforPlist.strings 文件中包含該字段,可以實現對它的本地化。( 唯一的字符串,區分 URL 類型) |
| CFBundleTypeOSTypes | Array | 該字段包含了一組映射到這個類型的四字母長的類型代碼。為了打開所有類型的文檔,可以把它設為 “****” 。該字段是必須的。 |
| CFBundleTypeRole | String | 該字段定義了那些與文檔類型有關的應用程序的角色。它的值可以是 Editer , Viewer , Printer , Shell 或 None 。有關這些值的詳細描述可以參見 “ 文檔的配置 ”。該字段是必須的。 |
| NSDocumentClass | String | 該字段描述了被用來實例化文檔的 NSDocument 子類。僅供 Cocoa 應用程序使用。 |
| NSExportableAs | Array | 該字段描述了一組可以輸出的文檔類型。僅供 Cocoa 應用程序使用。 |
使用iCloud:
表A-12 使用iCloud
| 字段 |
類型 |
是否必須 |
摘要 |
| NSUbiquitousDisplaySet |
String |
No |
iCloud 使用這個鍵來表示你應用的文件存儲。可以把它想象成 iCloud 中的一個目錄用來存放你應用中的文件 |
Bundle核心字段:
Mac OS X 為描述 bundle 的信息提供了一組核心字段。集成開發環境會賦予這些字段缺省值。表 A- 13 列出了這些字段。
表A-13 標准字段概要:
| 字段 |
類型 |
是否必須 |
摘要 |
| CFBundleDevelopmentRegion |
String |
No |
該bundle的地區。通常對應於作者的母語 。 |
| CFBundleGetInfoHTML |
String |
No |
用來在Finder的Get Info 面板中顯示的更豐富內容的字符串 。 |
| CFBundleGetInfoString |
String |
No |
用來在Finder的Get Info 面板中顯示的字符串 。 |
| CFBundleHelpBookFolder |
String |
No |
含有該bundle幫助文件的文件夾名字 。 |
| CFBundleHelpBookName |
String |
No |
當該bundle的幫助啟動時顯示的幫助文件的名字 。 |
CFBundleDevelopmentRegion
CFBundleDevelopmentRegion 字段指定了一個字符串值來標識 bundle 的地區。通常對應於作者的母語。如果不能找到用戶首選的地區或語言的資源,系統最后會使用該值。
CFBundleGetInfoHTML
CFBundleGetInfoHTML 字段含有會在 bundle 的信息窗口中顯示的 HTML 字符串。如果您希望在信息窗口中有更強的表現力,可以使用這 個鍵值對來替代純文本的 CFBundleGetInfoString 。通過把它加入到合適的 .lproj 目錄中的 InfoPlist.strings 文件 中,您也可以本地化該字符串。
如果 CFBundleGetInfoString 和 CFBundleGetInfoHTML 同時存在的話,系統會選擇使用 CFBundleGetInfoHTML 。
CFBundleGetInfoString
CFBundleGetInfoString 字段含有會在 bundle 的信息窗口中顯示的純文本字符串(這里的字符串也就是 Mac OS 9 中的長字符串)。該字段的格式應該遵照 Mac OS 9中的長字符串,例如: “ 2.2.1 , ? Great Software, Inc, 1999 ” 。通過把它加入到合適的 .lproj 目錄中的 InfoPlist.strings 文件中,您也可以本地化該字符串。
如果存在 CFBundleGetInfoHTML 的話,系統不會選擇使用該字段。
CFBundleHelpBookFolder
CFBundleHelpBookFolder 字段含有該 bundle 的幫助文件的文件夾名字。幫助通常被本地化成一種指定的語言,所以該字段指向的文件夾應該是所選擇語言的 .lproj 目錄中的文件夾。
CFBundleHelpBookName
CFBundleHelpBookName 指定了您的應用程序的幫助主頁。該字段指定的幫助頁面名可以和 HTML 文件名不同。在幫助文件 META 標簽的 CONTENT 屬性中指定了幫助頁面名。
應用程序特定的字段:
表A-14 應用程序特定的字段:
| 字段 |
類型 |
是否必須 |
摘要 |
| CFAppleHelpAnchor | String | No | 該bundle的初始HTML幫助文件。 |
| NSAppleScriptEnabled | String | No | 指定是否支持AppleScript。 |
| NSHumanReadableCopyright | String | Yes | 顯示在對話框中的版權信息。 |
| NSJavaNeeded | Boolean or String | No | 指定該程序是否需要一個Java虛擬機。 |
| NSJavaPath | Array | No | 一組Java類所在的路徑(前面需要加上NSJavaRoot)。 |
| NSJavaRoot | String | No | 包含Java類的根目錄。 |
| NSMainNibFile** | String | Yes | 應用程序的主nib文件名。 |
| NSPrincipalClass | String | Yes | bundle的主類的名字。 |
| NSServices | Array | No | 一組描述了由應用程序所提供的服務的字典。 |
CFAppleHelpAnchor
CFAppleHelpAnchor 字段定義了 bundle 的初始 HTML 幫助文件名,不需要包括 .html 或 .htm 擴展名。這個文件位於 bundle 的本地化資源目錄中,或者如果沒有本地化資源目錄的話,則直接被放在 Resources 目錄中。
NSAppleScriptEnabled
NSAppleScriptEnabled 字段說明了該應用程序是否支持 AppleScript 。如果您的應用程序支持,就需要把該字符串的值設為 “Yes” 。
NSHumanReadableCopyright
NSHumanReadableCopyright 字段包含了一個含有 bundle 的版權信息的字符串。您可以在 “ 關於 ” 對話框中顯示它。該字段通常會出現在 InfoPlist.strings 文件中,因為往往需要本地化該字段的值。
NSJavaNeeded
NSJavaNeeded 字段含有一個布爾值,用來確定在執行該 bundle 的代碼之前 Java虛擬機是否需要被載入並運行。您也可以指定一個字符串類型的值 “ YES ” 代替布爾型的值。
NSJavaPath
NSJavaPath 字段包含了一組路徑。每一個路徑指向一個 Java 類。該路徑相對於由NSJavaRoot 字段定義的位置來說,可能是一個絕對路徑也可能是一個相對路徑。開發環境會自動把這些值保存在數組中。
NSJavaRoot
NSJavaRoot 字段含有一個指向一個目錄的字符串。該目錄是應用程序的 Java 類文件的根目錄
NSPrincipalClass
NSPrincipalClass 字段定義了一個 bundle 的主類的名稱。對於應用程序來說,缺省情況下這個名字就是應用程序的名字。
NSServices
NSServices包含了一組字典,它詳細說明了應用程序所提供的服務。表A-5列出了用來指定服務的字段。
表 A-14-1 NSServices字典的字段:
| 字段 |
類型 |
描述 |
| NSPortName | String | 該字段指定了由您的應用程序監聽器為接受外部服務請求所提供的端口名稱。 |
| NSMessage | String | 該字段指定了用來調用該服務的實例方法名。在Objective-C中,實例方法的形式是messageName:userData:error:。在Java中,實例方法的形式是messageName(NSPasteBoard.String)。 |
| NSSendTypes | Array | 該字段指定了一組可以被該服務讀取的數據類型名。NSPasteboard類列出了幾個常用的數據類型。您必須包含此字段,NSReturnTypes,或者兩者。 |
| NSReturnTypes | Array | 該字段指定了一組可以被該服務返回的數據類型名。NSPasteboard類列出了幾個常用的數據類型。您必須包含此字段,NSSendTypes,或者兩者。 |
| NSMenuItem | Dictionary | 該 字段包含一個字典,它指定了加入Services菜單中的文本。字典中的唯一一個字段被稱為default並且它的值是菜單項的文本。該值必須是唯一的。 您可以使用斜杠“/”來指定一個子菜單。例如,Mail/Send出現在Services菜單中時就是一個帶有Send子菜單並且名為Mail的菜單。 |
| NSKeyEquivalent | Dictionary | 該字段是可選的,並且包含一個含有用來請求服務菜單命令的快捷按鍵的字典。與NSMenuItem類似,字典中的唯一一個字段被稱為default並且它的值是單個的字符。用戶可以通過按下Command,Shift功能鍵和相應的字符來請求該快捷按鍵。 |
| NSUserData | String | 該字段是一個可選字符串,它含有您的選擇值。 |
| NSTimeout | String | 該字段是一個可選的數字字符串,它指定了從應用程序 請求服務到收到它的響應所需要等待的毫秒數。 |
啟動服務字段:
啟動服務字段規定了 Mac OS X 中的應用程序是怎樣被啟動的。這些字段適用於 CFM 和 Mach-O 可執行文件。有關 CFM 和 Mach-O 可執 行文件的詳情可參見 “ 安裝和集成 ” 一章中的 “CFM 可執行文件 ” 。表 A- 6 列出了啟動服務的字 段。
表A-15 啟動服務字段:
| 字段 |
類型 |
是否必須 |
摘要 |
| LSBackgroundOnly | String | No | 指定了應用程序是否僅僅運行在后台。(僅適用於Mach-O的應用程序)。 |
| LSPrefersCarbon | String | No | 指定了應用程序是否優先運行在Carbon環境中。 |
| LSPrefersClassic | String | No | 指定了應用程序是否優先運行在Classic環境中。 |
| LSRequiresCarbon | String | No | 指定了應用程序是否必須運行在一個Carbon環境中。 |
| LSRequiresClassic | String | No | 指定了應用程序是否必須運行在一個Classic環境中。 |
| LSUIElement | String | No | 指定了應用程序是否是一個用戶界面組件,即一個應用程序不應該出現在Dock中或強制退出窗口。 |
LSBackgroundOnly
如果該字段存在並且被設為 “ 1 ” ,啟動服務將只會運行在后台。您可以使用該字段來創建無用戶界面的后台應用程序。如果您的應用程序使用了連接到窗口服務器 的高級框架,但並不需要顯示出來,您也應該使用該字段。后台應用程序必須被編譯成 Mach-O 可執行文件。該選項不適用於 CFM 應用程序。
您也可以指定該字段的類型為 Boolean 或 Number 。然而,只有 Mac OS X 10.2 或以上的版本才支持這些類型的值。
LSPrefersCarbon
如果該字段被設為 “ 1 ” , Finder 將會在顯示簡介面板中顯示 “ 在 Classic 環境中打開 ” 控制選項,缺省情況下該控件未被選中。如果需要,用戶可以修改這個控制選項來在 Classic 環境中啟動應用程序。
您也可以指定該字段的類型為 Boolean 或 Number 。然而,只有 Mac OS X 10.2 或以上的版本才支持這些類型的值。如果您在您的屬性列表中加入了該字段,那么就不要同時加入 LSPrefersClassic, LSRequiresCarbon, 或 LSRequiresClassic 字段 。
LSPrefersClassic
如果該字段被設為 “ 1 ” , Finder 將會在顯示簡介面板中顯示 “ 在 Classic 環境中打開 ” 控制選項,缺省情況下該控件被選中。如果需要,用戶可以修改這個控制選項來在 Carbon 環境中啟動應用程序。
您也可以指定該字段的類型為 Boolean 或 Number 。然而,只有 Mac OS X 10.2 或以上的版本才支持這些類型的值。如果您在您的屬性列表中加入了該字段,那么就不要同時加入 LSPrefersCarbon, LSRequiresCarbon, 或 LSRequiresClassic 字段。
LSRequiresCarbon
如果該字段被設為 “ 1 ” ,啟動服務將只在 Carbon 環境中運行應用程序。如果您的應用程序不應該運行在 Classic 環境中的話,可以使用該字段。
您也可以指定該字段的類型為 Boolean 或 Number 。然而,只有 Mac OS X 10.2 或以上的版本才支持這些類型的值。如果您在您的屬性列表中加入了該字段,那么就不要同時加入 LSPrefersCarbon, LSPrefersClassic, 或 LSRequiresClassic 字段。
LSRequiresClassic
如果該字段被設為 “ 1 ” ,啟動服務將只在 Classic 環境中運行應用程序。如果您的應用程序不應該運行在 Carbon 兼容環境中的話,可以使用該字段。
您也可以指定該字段的類型為 Boolean 或 Number 。然而,只有 Mac OS X 10.2 或以上的版本才支持這些類型的值。如果您在您的屬性列表中加入了該字段,那么就不要同時加入 LSPrefersCarbon, LSPrefersClassic, 或 LSRequiresCarbon 字段。
LSUIElement
如果該字段被設為 “ 1 ” ,啟動服務會將該應用程序作為一個用戶界面組件來運行。用戶界面組件不會出現在 Dock 或強制退出窗口中。雖然它們通常作為后台應 用程序運行,但是如果希望的話,它們也可以在前台顯示一個用戶界面。點擊屬於用戶界面組件的窗口,應用程序將會處理產生的事件。
Dock 和登錄窗口是兩個用戶界面組件應用程序。
應用程序包字段:
應用程序打包的目的是把一個應用程序打包成一個自我包含的實體,並且對用戶隱藏了它的內容。然而,用戶常常希望操作應用程序的某些文件。例如,用戶可能希 望添加或刪除某個插件,本地化資源,等等。開發者可以在 Info.plist 文件中指定一些可以由用戶維護的項目。那么 Finder 會把這些項目顯示在 bundle 的信息面板中,並允許用戶瀏覽,刪除或添加這些項目。
CFBundleInstallerInfo
應用程序打包信息的根字段是CFBundleInstallerInfo。該字段定義了一個字典,它包含了表A-7中所列出的字段。“是否必須”列指出了哪些是您必須支持的功能。
表A-16-1 應用程序打包字段:
| 字段 |
類型 |
是否必須 |
摘要 |
| APInstallerURL | String | Yes | 一個指向您希望安裝的文件的URL路徑。 |
| APFiles | Array | Yes | 一組字典,描述了那些可以被安裝的文件或目錄。 |
APInstallerURL
APInstallerURL 字段指定了一個指向您希望安裝的文件的路徑。您必須以 file://localhost/path/ 形式來說明這個路徑。所有被安裝的文件必須位於這個文件夾中。
APFiles
APFiles 字段指定了一個字典,描述了您希望安裝的文件。每個字典條目可以包含某個文件或目錄的描述。您可以讓 APFiles 字段包含在其自身中,用於指定在 目錄內部的文件。表 A- 8 列出了 用來指定有關單個文件或目錄的信息。
表A-16-2 APFiles字典字段:
| 字段 |
類型 |
描述 |
| APFileDescriptionKey | String | 用來顯示在Finder的信息窗口中的簡短描述。 |
| APDisplayedAsContainer | String | 如果值為“Yes”,該項目作為一個目錄圖標顯示在信息面板中;否則,它被顯示為一個文檔圖標。 |
| APFileDestinationPath | String | 一個安裝組件的相對路徑。 |
| APFileName | String | 文件或目錄的名稱。 |
| APFileSourcePath | String | 指向應用程序包中組件的路徑,相對與APInstallerURL路徑。 |
| APInstallAction | String | 操縱組件的動作:“Copy”或者“Open” |
UIFileSharingEnabled 應用程序支持itunes共享文件夾 值為 boolean 值 YES 共享; NO 不共享
這個字段在字段編輯器中的名稱為: Application supports iTunes file sharing
