프로그래밍/Xcode

[Xcode] Entitlements 파일

Joo-Topia 2025. 4. 8. 00:08
728x90

엔타이틀먼트 파일(Entitlements file)이란?

앱이 특정한 시스템 기능(권한) 을 사용하고자 할 때, 그 기능을 앱 서명(Signing) 시점에 명시적으로 선언하는 설정 파일
`.entitlements` 확장자이며, 내부는 plist(XML) 형식으로 되어 있다.

 

 

기능 Entitlement 설명
푸시 알림 aps-environment APNs 등록을 위한 선언
App Group com.apple.security.application-groups 앱 간 데이터 공유
iCloud com.apple.developer.icloud-services iCloud 문서/키-값 저장
키체인 공유 keychain-access-groups 앱 간 키체인 공유
백그라운드 작업 UIBackgroundModes 위치 추적, 오디오, fetch 등
Siri, HomeKit, Sign in with Apple 등 다양한 개별 entitlement 키들 시스템 기능들

 


Entitlements 파일 생성

1. Xcode에서 타겟 선택 → Signing & Capabilities 탭 클릭

2.+ Capability 버튼 클릭

3. 원하는 기능 추가 (예: Push Notifications)

4. 생성된 `.entitlements` 파일 확인

 


 .entitlements 파일 내용

푸시 알림 예시:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>com.apple.security.application-groups</key>
	<array>
		<string>group.com.yourcompany.yourapp.stage</string>
	</array>
</dict>
</plist>

 


중요한 특징

특징 설명
서명 시점에 사용됨 코드 자체보다, 앱 패키징 + 서명 단계에서 매우 중요
Capabilities에 따라 자동 수정됨 Signing & Capabilities에서 추가한 기능이 여기에 반영됨
Provisioning Profile과 연동됨 Apple 계정에 등록된 권한과 일치해야 함 (불일치 시 빌드/배포 에러 발생)
Debug / Release 별로 구분 가능 예: 개발용 푸시 인증서 → development, 배포용 → production

 


런타임 동작

- 앱이 UNUserNotificationCenter로 푸시 알림 권한 요청 할 경우
  aps-environment entitlement가 없으면 APNs 등록 자체가 실패

- 앱이 UserDefaults(suiteName:)으로 앱 그룹을 접근 할 경우
  앱 그룹 entitlement가 없으면 접근 거부됨

 

-> 코드만으로는 사용할 수 없음. 반드시 .entitlements에 등록 필요

 


앱 보안과 연결

Apple 플랫폼은 Sandbox 구조이기 때문에, Entitlements는 일종의 권한 계약서 역할을 함.

이 파일이 없으면 OS가 해당 기능을 차단해버림. (위 런타임 동작 예시)

 


 

728x90