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