iOS 개발시 

*.plist 에서 사용하는 키 목록


일반적으로 앱 개발시 info.plist 에서 사용할 수 있는 키의 목록과 설명입니다.


분류Xcode상 표현되는 이름
실제 키 이름
필수타입설명
Core Foundation
Localized resources can be mixed
CFBundleAllowMixedLocaliztions
Boolean지역화된 리소스의 사용 여부를 설정한다.
Localization native development region
CFBundleDevelopmentRegion
String번들이 만들어진 주 지역을 설정한다. 일반적으로 기본 지역화에 사용할 값을 설정한다.
Bundle display name
CFBundleDisplayName
String번들의 보여지는 이름. InfoPlist.strings로 지역화가 가능하다.
Document types
CFBundleDocumentTypes
Array앱에서 지원되는 도큐먼트 타입을 설정한다.
Executable file
CFBundleExecutable
String번들의 메인 실행 파일의 이름을 설정한다. 보통 프로젝트 이름이 초기값으로 설정되어 있다.
Icon file
CFBundleIconFile
String번들 아이콘 파일을 설정한다. 파일 이름에 확장자를 포함할 필요는 없다. 현재는 이 키를 대신하여 "CFBundleIcons"나 "CFBundleIconFiles"를 사용해야 한다.
Icon files
CFBundleIconFiles
Array번들의 아이콘 이미지 파일들의 이름을 지정하는 최상위 키다. (아이콘 이미지 파일은 PNG 포멧으로 만들기를 권장한다.) "CFBundleIconFile" 키가 존재한다면 이 키의 값이 우선한다. (iOS 3.2 이상에서 사용)
NONE
CFBundleIcons
Dictionary앱에서 사용하는 모든 아이콘들의 정보를 포함한다. "CFBundleIconFile"이나 "CFBundleIconFiles" 키보다 우선하지만 iOS 5.0 이상에서만 사용할 수 있다.
Bundle identifier
CFBundleIdentifier
String애플리케이션을 구분하는 유일한 ID. 보통 DNS를 거꾸로 써서 사용하며 알파벳(A-Z, a-z), 하이픈(-), 마침표(.)만 사용할 수 있다. 예를 들어 회사의 도메인이 AAA.com이고 애플리케이션 이름이 bbb이면 com.AAA.bbb와 같은 식으로 설정한다.
InfoDictionary version
CFBundleInfoDictionaryVersion
String속성 리스트 구조의 현재 버전을 설정한다. xcode가 자동으로 설정해 주기 때문에 수정할 필요가 없다. 현재 이 키의 값은 6.0이다.
Localizations
CFBundleLocalizations
Array지원하는 지역화 언어/국가들의 문자열 목록이다. 언어 이름이나 ISO 언어 규약에서 정의한 문자열을 입력한다.
(예 ko-kr, en-us, en-uk 등)
Bundle name
CFBundleName
String번들의 짧은 표시 이름을 설정한다. 16자 이상이어야 하며 메뉴바나 애플리케이션 정보창에 표기가 적합해야 한다. 대부분 CFBundleDisplayName과 동일하다.
Bundle OS Type code
CFBundlePackageType
String번들의 타입을 설정한다. 이 키의 값은 4문자로 구성되어 있다(애플리케이션의 경우 APPL, 프레임워크는 FMWK 식이다).
Bundle versions string, short
CFBundleShortVersionString
String번들의 릴리즈 버전을 설정한다. 아이폰 앱에서도 사용은 가능하나 일반적으로 맥용 앱에서 의미를 가진다.
Bundle creator OS Type code
CFBundleSignature
String번들 프로그램을 식별하는 네 글자 코드다. 예를 들어, 텍스트 편집기의 식별 코드는 'ttxt'이다.
URL types
CFBundleURLTypes
Array번들이 지원하는 URL 스킴을 설정한다. 이 키의 목적은 "CFBundleDocumentTypes"와 유사하지만 도큐먼트 타입 대신에 URL 스킴을 설정하는 게 틀리다.
Bundle version
CFBundleVersion
String번들의 빌드 버전을 지정한다. 애플리케이션 업데이트를 위해 유일 값으로 지정해야 한다.
Launch Services
Application requires iPhone environment
LSRequiresIPhoneOS
Boolean애플리케이션이 iOS에서만 실행할지의 여부를 설정한다.
Minimum system version
MinimumOSVersion
String현재 사용하지 않는다.
Cocoa
Main nib file base name
NSMainNibFile
String애플리케이션의 메인 nib/xib 파일 이름을 설정한다. 이 키는 "UIMainStoryboardFile"과 상호배타적이다. 따라서 info.plist에 두 개의 키를 함께 포함해서는 안된다.
NONE
NSUbiquitousDisplaySet
String애플리케이션에서 볼 수 있는 모바일 문서 데이터를 지정한다. 지정된 디스플레이 셋은 애플리케이션이 다룰 수 있는 모바일 폴더를 결정한다.
Exported Type UTIs
UTExportedTypeDeclarations
ArrayiOS 5.0 이상에서만 지원하는 키이다. 애플리케이션이 소유하거나 내보낼 수 있는 UTI를 설정한다.
Imported Type UTIs
UTImportedTypeDeclarations
Array애플리케이션에 의해 본질적으로 지원되지만 소유할 수는 없는 UTI를 설정한다.
UIKit
Fonts provided by application
UIAppFonts
ArrayiOS 3.2 이상에서 지원하는 키다. 애플리케이션에서 제공하는 폰트(정상적인 매커니즘을 통한)를 지정한다.
Application does not run in background
UIApplicationExitsOnSuspend
BooleaniOS 4.0 이상에서 지원하는 키다. 애플리케이션을 나갈 때 종료를 시킬지 아니면 백그라운드로 이동할지 여부를 설정한다.
Required background modes
UIBackgroundModes
ArrayiOS 4.0 이상에서 지원하는 키다. 애플리케이션이 특정 백그라운드 서비스를 제공하고 백그라운드에 있는 동안 계속적인 실행 여부를 설정한다.
Targeted device family
UIDeviceFamily
Number
or
Array
iOS 3.2 이상에서 지원하는 키다. 애플리케이션이 실행되도록 설계된 기본 하드웨어 유형을 설정한다.
Application supports iTunes file sharing
UIFileSharingEnabled
BooleaniOS 3.2 이상에서 지원하는 키다. iTunes를 통해 애플리케이션 파일의 공유 여부를 설정한다.
Initial interface orientation
UIInterfaceOrientation
String애플리케이션이 구동될 때 처음 사용할 인터페이스의 방향을 설정한다.
Launch image
UILaunchImageFile
StringiOS 3.2 이상에서 지원하는 키다. 애플리케이션이 구동될 때 보여지는 이미지명을 설정한다.
NONE
UIMainStoryboardFile
StringiOS 5.0 이상에서 지원하는 키다. 애플리케이션의 메인 스토리보드 파일을 설정한다.
NONE
UINewsstandApp
BooleaniOS 5.0 이상에서 지원하는 키다. 애플리케이션이 뉴스 가판대에 컨텐츠를 제공할지 여부를 설정한다.
Icon already includes gloss effects
UIPrerenderedIcon
Boolean애플리케이션의 아이콘이 이미 반짝이는(shine) 효과를 포함하고 있는지 여부를 설정한다.
Required device capabilities
UIRequiredDeviceCapabilities
Array
or
Dictionary
iOS 3.0 이상에서 지원하는 키다. iTunes와 앱 스토어에서 애플리케이션의 실행에 필요한 기기 관련 기능을 알릴 수 있다.
Application uses Wi-Fi
UIRequiresPersistentWiFi
Boolean애플리케이션이 Wi-Fi 연결을 필요로 하는지의 여부를 설정한다.
Status bar is initially hidden
UIStatusBarHidden
Boolean애플리케이션이 구동될 시점에 상태바의 표시 여부를 설정한다.
Status bar style
UIStatusBarStyle
String애플리케이션이 구동될 시점에 상태바의 스타일을 설정한다.
Supported external accessory protocols
UISupportedExternalAccessoryProtocols
ArrayiOS 3.0 이상에서 지원하는 키다. 애플리케이션이 지원하고 외부 액세서리 하드웨어와 통신하는 데 사용할 수 있는 프로토콜을 설정한다.
Supported interface orientations
UISupportedInterfaceOrientations
ArrayiOS 3.2 이상에서 지원하는 키다. 애플리케이션이 지원하는 인터페이스 방향을 설정한다.
Renders with edge antialiasing
UIViewEdgeAntialiasing
BooleaniOS 3.0 이상에서 지원하는 키다. 픽셀 경계에 정렬되지 않은 레이어를 그릴 때 코어 애니메이션 레이어의 안티 앨리어싱 사용 여부를 설정한다.
Renders with group opacity
UIViewGroupOpacity
BooleaniOS 3.0 이상에서 지원하는 키다. 코어 애니메인션 sublayer들이 superlayer의 불투명도를 상속할지 여부를 설정한다.


반응형



UITextAttributeTextColor 상수가 

iOS7 에서 deprecated 되었다.



iOS7 이상부터는 기존에 사용하던 UITextAttributeTextColor 상수를 NSForegroundColorAttributeName 상수로 교체하여 사용하면 간단히 수정이 된다.



아래 예제를 참고하자.


[iOS7]

 [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:
     @{UITextAttributeTextColor:[UIColor crediteraBackButtonColor],
       NSFontAttributeName: [UIFont proximaNovaRegularWithFontSize:16.0f]
       } forState:UIControlStateNormal];

[iOS8]

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:
     @{NSForegroundColorAttributeName:[UIColor crediteraBackButtonColor],
       NSFontAttributeName: [UIFont proximaNovaRegularWithFontSize:16.0f]
       } forState:UIControlStateNormal];




반응형




앱을 구현하다가 보면 시스템 알림 설정값을 체크해야 하는 경우들이 있다.

일반적으로 iOS8 이전 SDK 에서는 아래와 같은 방법으로 체크를 하였지만,

if([UIApplication sharedApplication].enabledRemoteNotificationTypes  == UIRemoteNotificationTypeNone) {
    // 시스템 알림 설정이 꺼져있는 경우
}
else {
    // 시스템 알림 설정이 켜져있는 경우.
    // UIRemoteNotificationTypeBadge, UIRemoteNotificationTypeSound, UIRemoteNotificationTypeAlert, UIRemoteNotificationTypeNewsstandContentAvailability
    // 위의 네가지 경우에 만족하는 상태
}


iOS8 SDK 부터는 enabledRemoteNotificationTypes 이 메서드가 Deprecated 되어 사용할 수 없게 되었다.


이 문제를 수정하기 위해서는 iOS8과 그 이하 버전의 분기를 타야 하고, 변경된 메서드를 아래와 같이 적용해 주어야 한다.


 if ([[[[UIDevice currentDevice].systemVersion componentsSeparatedByString:@"."] objectAtIndex:0] integerValue] >= 8) {
    if([UIApplication sharedApplication].currentUserNotificationSettings.types  == UIUserNotificationTypeNone){
    // 시스템 알림 설정이 꺼져있는 경우
    }
    else {
        // 시스템 알림 설정이 켜져있는 경우.
        // UIUserNotificationTypeBadge, UIUserNotificationTypeSound, UIUserNotificationTypeAlert
        // 위의 세가지 경우에 만족하는 상태
    }
}
else {
    if([UIApplication sharedApplication].enabledRemoteNotificationTypes  == UIRemoteNotificationTypeNone){
        // 시스템 알림 설정이 꺼져있는 경우
    }
    else {
        // 시스템 알림 설정이 켜져있는 경우.
        // UIRemoteNotificationTypeBadge, UIRemoteNotificationTypeSound, UIRemoteNotificationTypeAlert, UIRemoteNotificationTypeNewsstandContentAvailability
        // 위의 네가지 경우에 만족하는 상태
    }
}


이 문제는 새로운 버전으로 작업을 하면서 크래쉬같이 눈에 보여서 바로 수정할 수 있는 이슈가 아니라 놓치기 쉬운 문제이니 잘 확인해야 할 것 같다.

반응형