Just a Computer Graphics Studio & My Life

已經開發iOS滿兩年,對於專案中Info.plist常用選項,還是有許多不明白的項目,平常也沒找到相關說明,好在偶然發現前人整理好的經驗談,描述得讓我輕易明白其用途,往後開發App就可以考慮嘗試看看~

Info plist1

1. Application does not run in background(鍵名:UIApplicationExistsOnSuspend)自從iOS4.0之後,當你在應用程式執行的時候按下Home鍵,應用程式並不會中斷目前的執行,而是躲到背景去了。因此希望使用者在按下Home鍵之後就要中斷目前程式的執行,可以勾選這個選項。

2. Application requires iPhone environment(鍵名:LSRequiresIPhoneOS)iOS的家族主要包含了iPhone、iPad、iPod Touch這三種設備。如果你的應用程式只能在iPhone環境下使用的話,可以勾選這選項。

3. Application supports iTunes file sharing(鍵名:UIFileSharingEnabled)在iTunes9.1之後的版本增加了一個檔案共享的功能,只要打開info.plist裡面的這個選項,然後把你要共享的檔案儲存在Documents目錄裡面,就可以在iTunes裡面的應用程式標籤頁看到這份文件。

4. Application uses Wi-Fi(鍵名:UIRequiresPersistentWiFi)如果你的應用程式需要使用的WiFi來連線的話,那麼你可以開啓這個功能。當使用者在執行這個應用程式的時候並未開啓WiFi,就會在畫面上自動跳出對話框要求開啓WiFi。

5. Bundle creator OS Type code (鍵名:CFBundleSignature)CFBundleSignature是一個四個字母長度的字串,用以表示開發者對於應用程式的標識。例如:在一個文字編輯的應用程式,你可以標識為”text”。

6. Bundle display name(鍵名:CFBundleDisplayName)應用程式本土化的顯示名稱,預設值為${PRODUCT_NAME}。這個變數可以在點擊Targets後出現的專案設定畫面中修改,找到”Product Name”後修改為產品名稱就可以了,編譯後的.app也會以這個名稱命名。

7. Bundle identifier(鍵名:CFBundleIdentifier)用來標示應用程式的唯一ID,通常是以反向的DNS方式命名的,例如:com.happyStudio.happyApp,這個名稱應該在iTunes Connect裡面新增的應用程式ID一致。

8. Bundle name(鍵名:CFBundleName)應用程式的短名稱,通常就是應用程式名稱。

9. Bundle OS Type code(鍵名:CFBundlePackageType)用來標示整個封包的(bundle)的類型。在Mac裡面,一個封包可能是一個檔案或目錄,其目的在於將軟體使用到的資源包在一起。例如應用程式應標識為APPL。

10. Bundle version(鍵名:CFBundleVersion)用以標識編譯版本(Bundle number),你可以使用任何字串格式來表示這個版本。例如使用一個數字來表示編譯次數,或使用日期來包不同時期的版本。

11. Bundle version string,short (鍵名:CFBundleShortVersionString)應用程式的版本,通常是以三個數字來表示版本號,例如:1.0.7。

12. Executable architectures(鍵名:LSExcutableArchitectures)為一個陣列形態的設定值。用以設定App運行的架構環境,例如:i386,ppc,ppc64,x86_64

13. Executable file(鍵名:CFBundleExecutable)執行檔的名稱。

14. Fonts provide by application(鍵名:UIAppFonts)為一個陣列形態的設定值。用來指定應用程式所使用的外部字型。你可以在應用程式內使用自己的字型檔,只要將字型檔案加入到專案內,在設定值指定字型檔名稱後,就能在程式碼裡面使用這些字型。

15. Get Info string (鍵名:CFBundleGetInfoString)用於Mac的Finder上的應用程式的描述。

16. Icon already includes gloss effects(鍵名:UIPrerenderedIcon)指定應用程式的圖示是否加上光暈效果,如果不希望加上光暈效果,可以勾選此選項。

17. Icon file(鍵名:CFBundleIconFile)用來設定應用程式的圖示檔,如果沒有指定的話,則使用預設值Default.png,依照Apple的規定,這個圖是必須是57×57的圖形檔。

18. Icon files(鍵名:CFBundleIconFiles)由於iPhone與iPad的開發工具以及SDK都是相同的,因此同一個應用程式也可以同時在兩個設備上使用,只不過兩著的圖是不太一樣。這個鍵值是一個陣列類型的設定值,用來指定iPhone與iPad的應用程式圖示,你只要給兩個圖示檔名,其中iPhone的圖示為57×57 pixel,iPad則為72×72 pixel,系統會自動依照圖示大小判斷該圖示是使用在哪種設備上。

19. Info dictionary version(鍵名:CFBundleInfoDictionaryVersion)info.plist格式的版本。一般來說,我們不會變動這個數值。

20. Initial interface orientateon(鍵名:UIInterfaceOrientation)指定應用程式初始時的方向。

21. Laumch image(鍵名:UILaunchImageFile)用以指定應用程式啓動時的圖檔。

22. Localization native development region(鍵名:CFBundleDevelopmentRegion)應用程式原始的語系版本。

23. Localizations(鍵名:CFBundleLocalizations)用以指定應用程式所支援的語系。

24. Localized resources can be mixed(鍵名:CFBundleAllowedMimxedLocalizations)是否允許應用程式可以取得框架庫內的語系檔。

25. Main nib file base name(鍵名:NSMainNibFile)主要的Nib檔案名稱,預設值為MainWindow。

26. Renders with edge antialisasing(鍵名:UIViewEdgeAntialiasing)設定core animation的圖層是否開啓抗鋸齒功能。

27. Renders with group opacity(鍵名:UIViewGroupOpacity)設定core animation的圖層使否繼承上一層透明度。

28. Required background modes(鍵名:UIBackgroundModes)設定當應用程式進入背景執行後,哪些動作要繼續在背景執行。這個鍵值是一個陣列類型的設定,可設定動作包括:audio、location、voip等。

29. Required device capabilities(鍵名:UIRequiredDeviceCapabilities)設定應用程式需要使用到的硬體,如此可以確定應用程式在該設備上執行時不會發生錯誤。

30. Status bar is initially hidden(鍵名:UIStatusBarHidden)設定狀態列是否一開始隱藏。

31. Status bar style(UIStatusBarStyle)設定狀態列的顯示類型。

32. Supported external accessory protocols(鍵名:UISupportedExternalAccessoryProtocols)指定應用程式與外界硬體配件間支援的通訊協定,這個鍵值是一個陣列設定,可以指定多個通訊協定。

33. Supported interface orientateons(鍵名:UISupportedInterfaceOrientations)設定應用程式所支援的顯示模式(肖像模式或風景模式),這個鍵值是一個陣列,可以支援多個不同的顯示模式。

Show Raw Keys/Values

Show Raw Keys/Values

以上列舉常見的項目,隨著iOS的發展進化,項目會增刪也會修改。

161005更新:

隨著iOS 10的到來,有許多項目跟Privacy有關,若沒有設定顯示給使用者看的描述,App在運行時就會crash給使用者看XD~

像是用到以下功能項目,都必須設定請求描述:

Contacts, Calendar, Reminders, Photos, Bluetooth Sharing, Microphone, Camera, Location, Health, HomeKit, Media Library, Motion, CallKit, Speech Recognition, SiriKit, TV Provider.

不然crash後會出現類似這樣的log:

This app has crashed because it attempted to access privacy-sensitive data without a usage description. The app’s Info.plist must contain an NSCameraUsageDescription key with a string value explaining to the user how the app uses this data.

ios plist privacy.png

看來Apple真的很在意用戶的隱私呢!

參考:

Advertisements

發表留言

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

標籤雲

%d 位部落客按了讚: