Xcode中Info.plist欄位詳解

NO IMAGE

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的簡稱, 這個健指定了你的應用的名稱

CFBundleDisplayNameString

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

 ArrayNo

這個鍵的引入,是用來處理在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

 ArrayNo

為了允許你的應用開啟那些不屬於它的型別,你需要匯入那個UTI,並且這個時你要用到的鍵

CFBundleURLTypes

CFBundleURLTypes欄位包含了一組描述了應用程式所支援的URL協議的字典。它的用途類似於CFBundleDocumentTypes的 作用,但它描述了URL協議而不是文件型別。每一個字典條目對應一個單獨的URL協議, 每一個都代表你應用支援的一種URL規則。表A-11-1列出了在每一個字典條目中使用的欄位。

表A-11-1 CFBundleURLTypes字典的欄位

欄位

型別

描述

CFBundleTypeRoleString

該欄位定義了那些與URL型別有關的應用程式的角色(即該應用程式與某種文件型別的關係)。它的值可以是Editer,Viewer,Printer,Shell或None。有關這些值的詳細描述可以參見“ 文件的配置”。該欄位是必須的。( 當開啟這個URL時你的應用所扮演的角色)

CFBundleURLIconFileString

該欄位包含了被用於這種URL型別的圖示檔名(不包括副檔名)字串。( 指定對這種URL所使用的圖示的檔名)

CFBundleURLNameString

該欄位包含了這種URL型別的抽象名稱字串。為了確保唯一性,建議您使用Java包方式的命名法則。這個名字作為一個欄位也會在InfoPlist.strings檔案中出現,用來提供該型別名的可讀性版本。( 這應該時一個唯一的字串,用來區分不同的URL型別)

CFBundleURLSchemesArray

該欄位包含了一組可被這種型別處理的URL協議。例如:http,ftp等。( 字串陣列,每一個元素代表這個規則支援的URL)

CFBundleDocumentTypes

CFBundleDocumentTypes欄位儲存了一組字典,它包含了該應用程式所支援的文件型別。每一個字典都被稱做型別定義字典,並且包含了用於定義文件型別的欄位。表A-11-2列出了型別定義字典中支援的欄位。

表 A-11-2 CFBundleDocumentTypes字典的欄位

欄位

型別

描述

CFBundleTypeExtensionsArray

該欄位包含了一組對映到這個型別的副檔名。為了開啟具有任何副檔名的文件,可以用單個星號“*”。該欄位是必須的。

CFBundleTypeIconFile

String

  圖示檔案的陣列,該欄位指定了系統顯示該類文件時使用的圖示檔名,該圖示檔名的副檔名是可選的。如果沒有副檔名,系統會根據平臺指定一個(例如,Mac OS 9中的.icons)。

CFBundleTypeNameString

該欄位包含了這種文件型別的抽象名稱。通過在適當的InforPlist.strings檔案中包含該欄位,可以實現對它的本地化。( 唯一的字串,區分URL型別)

CFBundleTypeOSTypesArray

該欄位包含了一組對映到這個型別的四字母長的型別程式碼。為了開啟所有型別的文件,可以把它設為“****”。該欄位是必須的。

CFBundleTypeRoleString

該欄位定義了那些與文件型別有關的應用程式的角色。它的值可以是Editer,Viewer,Printer,Shell或None。有關這些值的詳細描述可以參見“ 文件的配置”。該欄位是必須的。

NSDocumentClassString

該欄位描述了被用來例項化文件的NSDocument子類。僅供Cocoa應用程式使用。

NSExportableAsArray

該欄位描述了一組可以輸出的文件型別。僅供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 OS9中的長字串)。該欄位的格式應該遵照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 應用程式特定的欄位:

欄位

型別

是否必須

摘要

CFAppleHelpAnchorStringNo該bundle的初始HTML幫助檔案。
NSAppleScriptEnabledStringNo指定是否支援AppleScript。
NSHumanReadableCopyrightStringYes顯示在對話方塊中的版權資訊。
NSJavaNeededBoolean or StringNo指定該程式是否需要一個Java虛擬機器。
NSJavaPathArrayNo一組Java類所在的路徑(前面需要加上NSJavaRoot)。
NSJavaRootStringNo包含Java類的根目錄。
NSMainNibFile**StringYes

應用程式的主nib檔名。

NSPrincipalClassStringYesbundle的主類的名字。
NSServicesArrayNo一組描述了由應用程式所提供的服務的字典。

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字典的欄位:

欄位

型別

描述

NSPortNameString該欄位指定了由您的應用程式監聽器為接受外部服務請求所提供的埠名稱。
NSMessageString該欄位指定了用來呼叫該服務的例項方法名。在Objective-C中,例項方法的形式是messageName:userData:error:。在Java中,例項方法的形式是messageName(NSPasteBoard.String)。
NSSendTypesArray該欄位指定了一組可以被該服務讀取的資料型別名。NSPasteboard類列出了幾個常用的資料型別。您必須包含此欄位,NSReturnTypes,或者兩者。
NSReturnTypesArray該欄位指定了一組可以被該服務返回的資料型別名。NSPasteboard類列出了幾個常用的資料型別。您必須包含此欄位,NSSendTypes,或者兩者。
NSMenuItemDictionary該 欄位包含一個字典,它指定了加入Services選單中的文字。字典中的唯一一個欄位被稱為default並且它的值是選單項的文字。該值必須是唯一的。 您可以使用斜槓“/”來指定一個子選單。例如,Mail/Send出現在Services選單中時就是一個帶有Send子選單並且名為Mail的選單。
NSKeyEquivalentDictionary該欄位是可選的,並且包含一個含有用來請求服務選單命令的快捷按鍵的字典。與NSMenuItem類似,字典中的唯一一個欄位被稱為default並且它的值是單個的字元。使用者可以通過按下Command,Shift功能鍵和相應的字元來請求該快捷按鍵。
NSUserDataString該欄位是一個可選字串,它含有您的選擇值。
NSTimeoutString該欄位是一個可選的數字字串,它指定了從應用程式請求服務到收到它的響應所需要等待的毫秒數。

啟動服務欄位:

啟動服務欄位規定了Mac OS X中的應用程式是怎樣被啟動的。這些欄位適用於CFM和Mach-O可執行檔案。有關CFM和Mach-O可執行檔案的詳情可參見“安裝和整合”一章中的“CFM可執行檔案”。表A-6列出了啟動服務的欄位。

表A-15 啟動服務欄位:

欄位

型別

是否必須

摘要

LSBackgroundOnlyStringNo指定了應用程式是否僅僅執行在後臺。(僅適用於Mach-O的應用程式)。
LSPrefersCarbonStringNo指定了應用程式是否優先執行在Carbon環境中。
LSPrefersClassicStringNo指定了應用程式是否優先執行在Classic環境中。
LSRequiresCarbonStringNo指定了應用程式是否必須執行在一個Carbon環境中。
LSRequiresClassicStringNo指定了應用程式是否必須執行在一個Classic環境中。
LSUIElementStringNo指定了應用程式是否是一個使用者介面元件,即一個應用程式不應該出現在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 應用程式打包欄位:

欄位

型別

是否必須

摘要

APInstallerURLStringYes一個指向您希望安裝的檔案的URL路徑。
APFilesArrayYes一組字典,描述了那些可以被安裝的檔案或目錄。

APInstallerURL

APInstallerURL欄位指定了一個指向您希望安裝的檔案的路徑。您必須以file://localhost/path/ 形式來說明這個路徑。所有被安裝的檔案必須位於這個資料夾中。

APFiles

APFiles欄位指定了一個字典,描述了您希望安裝的檔案。每個字典條目可以包含某個檔案或目錄的描述。您可以讓APFiles 欄位包含在其自身中,用於指定在目錄內部的檔案。表A-8列出了用來指定有關單個檔案或目錄的資訊。

表A-16-2 APFiles字典欄位:

欄位

型別

描述

APFileDescriptionKeyString用來顯示在Finder的資訊視窗中的簡短描述。
APDisplayedAsContainerString如果值為“Yes”,該專案作為一個目錄圖示顯示在資訊面板中;否則,它被顯示為一個文件圖示。
APFileDestinationPathString一個安裝元件的相對路徑。
APFileNameString檔案或目錄的名稱。
APFileSourcePathString指向應用程式包中元件的路徑,相對與APInstallerURL路徑。
APInstallActionString操縱元件的動作:“Copy”或者“Open”

UIFileSharingEnabled 應用程式支援itunes共享資料夾 值為 boolean 值 YES 共享; NO 不共享

這個欄位在欄位編輯器中的名稱為: Application supports iTunes file sharing