Info.plist란 Information Property List의 약자이다. 공부를 시작하기 전에 정보, 속성을 가지고 있는 어떤 리스트 정도로 예상해 봤다.
→ 공식문서를 읽어보니 정확한 Info.plist의 내용은 다음과 같았다.
iOS와 macOC는 더 나은 User experience를 위해서 앱이나 번들 안의 특별한 메타데이터에 의존한다고 한다. 이 메타데이터들은 user에게 직접 보여주기도 하고, system에서 app launching을 위해 사용하기도 한다. App이나 bundle이 이 메타데이터들을 시스템에게 제공하기 위해서 어떤 특정한 파일을 사용하는데, 이 파일이 Information Property List, 줄여서 Info.plist인 것이다!
사용 예시 : 번들(앱)이 어떤 아이콘을 가질지, 어떤 문서를 지원할지 등등
이번 글에서는 간단하게 Info.plist에 대해 알아보고 그 Key들에 대해 알아본다.
✏️ Information Property List(Info.plist)
Property list란 시스템이 런타임에 엑세스할 수 있는 임의의 데이터를 구조화하는 방법이다. Info.plist도 번들에 대한 구성 데이터를 포함하는 property list의 일종이다. Xcode에서는 일반적으로 프로젝트 생성 시 초기 key - value 쌍을 통해 적절한 기본값들로 Info.plist를 지정해주며, 원한다면 프로젝트에 맞게 key - value 쌍을 수정하거나 추가할 수 있다.
Info.plist는 UTF-8로 인코딩 되며, XML파일로 나타난다. 원한다면 직접 수정할 수 있지만, 굳이 그럴 필요 없이 Xcode상에서 원하는 설정 값들을 골라주는 방식으로 사용하면 될 것 같다.
Info.plist의 Key들은 몇 가지 유형(?)으로 나눠져 있으며, 그 유형들은 다음과 같다.
- Core Foundation Keys
- iOS Keys
- App Extension Keys
- 그 외(macOS, watchOS등은 이 포스팅에서 제외)
✏️ Core Foundation Keys
번들의 기본 뼈대(infrastructure)를 제공하는 Core Foundation 프레임워크와 관련된 key들이다. 이 프레임워크에서 인식하는 많은 키가 번들을 정의하는 데 기본이 되며 번들의 내용을 결정하는데 중요한 역할을 한다.
아래의 표에서 iOS에 해당하는 Core Foundation key들을 살펴본다.
Localized resources can be mixed | 프레임워크에서 localized된 리소스를 검색하기 위해 Foundation tool에서 사용 |
Localization native development region | (Recommended) 언어 ID로 번들의 기본 언어 및 지역 |
Bundle display name | (Required, Localizable) 번들의 사용자가 볼 수 있는 이름. Siri에서 사용하고 iOS의 홈 화면에 표시 |
Document types | 번들에서 지원하는 문서 유형을 설명하는 Dictionary 배열 |
Executable file | (Recommended) 번들의 실행파일 이름 |
Icon files | 번들 아이콘 이미지 파일의 이름을 지정하기 위한 최상위 키 |
Bundle identifier | (Recommended) 번들의 앱 유형을 지정하는 식별자 문자열 |
InfoDictionary version | (Recommended) Info.plist 형식에 대한 버전 정보 |
Localizations | 자체 localized된 리소스를 처리하는 앱에 대한 localize 정보를 포함 |
Bundle name | (Recommended, Localizable) 16자 미만의 번들 이름(앱 이름) |
Bundle OS Type code | 번들 유형을 식별하는 4자리 코드 |
Bundle version string, short | (Localizable) 번들의 릴리즈 버전 번호 문자열 |
Accessibility bundle name | 앱의 음성 이름 |
URL types | 번들에서 지원하는 URL체계를 설명하는 Dictionary 배열 |
Bundle version | (Recommended) 번들에 대한 빌드 버전 번호 문자열 |
✏️ iOS Keys
iOS 프레임워크는 iOS 애플리케이션을 만드는데 필요한 인프라를 제공한다. 위에서 본 Core foundation framework는 번들을 위한 기초 인프라였다면, iOS framework는 iOS 애플리케이션을 위한 infrastructure라고 생각하면 될 것 같다.
다음과 같은 Info.plist의 Key들을 이용하여 애플리케이션의 실행 시점의 모습과 실행 중의 동작을 설정할 수 있다.
Fonts provided by application | 앱의 Font 리스트를 지정 |
Application does not run in background | 앱이 백그라운드에서 실행되는 대신 종료될지의 여부를 결정 |
Required background modes | 앱이 백그라운드에서 계속해서 실행될지를 결정 |
Targeted device family | 앱의 대상 device를 정의하기 위해 Xcode에 의해 자동으로 설정 |
Initial interface orientation | 앱의 인터페이스 초기 방향을 지정 |
Launch image | 앱의 시작 이미지 이름을 지정 |
Icon already includes gloss effects | 앱 아이콘에 gloss(광택)효과가 포함되어있는지 여부 결정 |
Required device capabilities | 앱을 실행하는 데 필요한 기기 관련 기능을 지정 |
Application uses Wi-Fi | Wi-Fi 연결이 필요한지를 결정 |
Status bar is initially hidden | 앱이 시작됐을 때 status bar를 숨길지 여부 결정 |
Status bar style | 앱이 실행될 때 status bar의 스타일을 지정 |
Supported external accessory protocols | 연결된 하드웨어 액세서리와의 통신에 지원되는 통신 프로토콜을 지정 |
Supported interface orientations | 앱이 지원하는 인터페이스 방향을 지정 |
Supports Document Browser | 앱이 문서 기반 앱임을 지정 |
Renders with edge antialiasing | Drawing에서 픽셀 경계에 맞춰지지 않을 때 core animation 레이어가 안티 앨리어싱을 사용할지 여부를 지정 |
Renders with group opacity | Core animation 레이어가 상위 레이어의 불투명도를 상속할지 여부 지정 |
✏️ Privacy 관련 Keys
개인 정보와 관련된 Key들이 많이 있는데, 아마도 이러한 사항들이 엄격하게 지켜져야 하기 때문에 많은 항목들이 있는 것이 아닌가 생각된다. 가만히 이름들을 보면 평소 애플리케이션을 사용할 때 나왔던 pop up alert들과 연관 있는 것 같기도 하고...
Access to a File Provide Domain Usage Description | 앱이 파일 공급자가 관리하는 파일에 엑세스해야 하는 이유를 사용자에게 알려주는 메세지 |
AppleEvents Sending Usage Description | 앱이 Apple 이벤트를 보낼 수 있는 기능을 요청하는 이유를 사용자에게 알려주는 메시지 |
Bluetooth Always Usage Description | 앱이 Bluetooth에 엑세스해야 하는 이유를 사용자에게 알려주는 메시지 |
Bluetooth Peripheral Usage Description | 앱이 Bluetooth 주변장치에 연결하는 기능을 요청하는 이유를 사용자에게 알려주는 메시지 |
Calendars Usage Description | 앱이 사용자의 캘린더 데이터에 대한 엑세스를 요청하는 이유를 사용자에게 알려주는 메시지 |
Camera Usage Description | 앱이 카메라에 대한 엑세스를 요청하는 이유를 사용자에게 알려주는 메시지 |
Contacts Usage Description | 앱이 사용자의 연락처에 대한 엑세스를 요청하는 이유를 사용자에게 알려주는 메시지 |
Desktop Folder Usage Description | 앱이 사용자의 폴더에 엑세스해야하는 이유를 사용자에게 알려주는 메시지 |
Documents Folder Usage Description | 앱이 사용자의 문서 폴더에 엑세스해야하는 이유를 사용자에게 알려주는 메시지 |
Downloads Folder Usage Description | 앱이 다운로드폴더에 엑세스해야하는 이유를 사용자에게 알려주는 메시지 |
Driver Extension Usage Description | 앱이 시스템 확장 번들을 설치하려고 하는 이유를 사용자에게 알려주는 메시지 |
... | ... |
🗒️ 결론
Info.plist는 번들(또는 애플리케이션)의 설정들을 key - value쌍으로 시스템에게 제공하는 것을 도와주는 파일이다! 엄청나게 많은 설정들이 있기 때문에, 이런 것들이 있다고 알아두고 필요할 때 찾아서 사용하면 될 것이며 처음보는 표현이 나오더라도 당황하지 말고 검색하자~!
🍎 참고 문서
'공부 > [iOS&Swift]' 카테고리의 다른 글
[iOS] UIScrollView에 대하여 (0) | 2022.02.11 |
---|---|
[iOS] Storyboard library component들에 대하여 (0) | 2022.02.10 |
[Swift] ARC(Automatic Reference Counting) - 2 (0) | 2022.02.09 |
[iOS] Xcode - Target, Project, Scheme, Build setting 에 대하여 (0) | 2022.02.07 |
[Swift] ARC(Automatic Reference Counting) - 1 (0) | 2022.02.05 |
댓글