Xamarin.iOS에서 자격 사용Working with entitlements in Xamarin.iOS

자격은 특수 앱 기능이며 올바르게 사용하도록 구성된 애플리케이션에 부여된 보안 권한입니다.Entitlements are special app capabilities and security permissions granted to applications that are correctly configured to use them.

iOS에서 앱은 애플리케이션과 특정 시스템 리소스 또는 사용자 데이터 사이의 액세스를 제한하는 일련의 규칙을 제공하는 _샌드박스_에서 실행됩니다.In iOS, apps run in a sandbox, which provides a set of rules that limit access between the application and certain system resources or user data. _자격_은 시스템이 샌드박스를 확장하여 앱에 추가 기능을 제공하도록 요청하는 데 사용됩니다.Entitlements are used to request that the system expand the sandbox to give your app additional capabilities.

앱의 기능을 확장하려면 앱의 Entitlements.plist 파일에 자격을 제공해야 합니다.To extend the capabilities of your app, an entitlement must be provided in your app’s Entitlements.plist file. 특정 기능만 확장이 가능하며 이러한 기능은 기능 사용 가이드에 나열되어 있고 아래 설명되어 있습니다.Only certain capabilities can be extended and these are listed in the Working with Capabilities guide and described below. 자격은 시스템에 키/값 쌍으로 전달되며 일반적으로 기능당 하나만 필요합니다.Entitlements are passed to the system as a Key/Value pair, and generally only one is required per capability. 구체적인 키와 값은 이 가이드의 뒷부분에 나오는 자격 키 참조 섹션에 설명되어 있습니다.The specific Keys and Values are described in the Entitlement key reference section later in this guide. Mac용 Visual Studio와 Visual Studio는 Entitlements.plist 편집기를 통해 Xamarin.iOS 앱에 자격을 추가할 수 있는 명확한 인터페이스를 제공합니다.Visual Studio for Mac and Visual Studio provide a clear interface for adding entitlements in a Xamarin.iOS app through the Entitlements.plist editor. 이 가이드에서는 Entitlements.plist 편집기를 소개하고 이 편집기를 사용하는 방법을 소개합니다.This guide introduces the Entitlements.plist editor and how to use it. 또한 각 기능에 대해 iOS 프로젝트에 추가할 수 있는 모든 자격에 대한 참조를 제공합니다.It also provides a reference of all the entitlements that can be added to an iOS project for each capability.

자격 및 프로비전Entitlements and provisioning

Entitlements.plist 파일은 자격을 지정하는 데 사용되며 응용 프로그램 번들에 서명하는 데 사용됩니다.The Entitlements.plist file is used to specify entitlements and is used to sign the application bundle.

하지만 앱이 코드로 올바르게 서명되었는지 확인하려면 추가 프로비전이 필요합니다.However, some additional provisioning is required to ensure that the app is code signed correctly. 사용된 프로비전 프로필에는 필요한 기능이 활성화된 앱 ID가 있어야 합니다.The provisioning profile used must contain an App ID that has the required capability enabled. 방법에 대한 자세한 내용은 기능 사용 가이드를 참조하세요.For information on how to do this, refer to the Working with Capabilities guide.

중요

Entitlements.plist 파일은 기능을 사용하여 응용 프로그램의 올바른 속성을 입력하는 데 도움이 되지만 Apple 개발자 계정에 연결되어 있지 않기 때문에 프로비저닝 프로필을 생성할 수 없습니다.The Entitlements.plist file helps fill in the correct properties for an application using capabilities, but it can't generate a provisioning profile as it is not linked to an Apple developer account. 애플리케이션을 배포하려면 개발자 포털을 사용하여 프로비전 프로필을 생성해야 합니다.You will still need to generate a provisioning profile using the developer portal to deploy and distribute the application.

Xamarin.iOS 프로젝트에서 자격 설정Set entitlements in a Xamarin.iOS project

앱 ID를 정의할 때 필요한 애플리케이션 서비스를 선택하고 구성하는 것 외에도, Info.plistEntitlements.plist 파일을 편집하여 Xamarin.iOS 프로젝트에서 자격을 구성해야 합니다.In addition to selecting and configuring the required application services when defining the App ID, the entitlements must also be configured in the Xamarin.iOS project by editing the Info.plist and Entitlements.plist files.

Mac용 Visual Studio에서 자격을 구성하려면 다음을 수행합니다.To configure the entitlements in Visual Studio for Mac, do the following:

  1. 솔루션 탐색기에서 Info.plist 파일을 두 번 클릭하여 편집용으로 엽니다.In the Solution Explorer, double-click the Info.plist file to open it for editing.
  2. iOS 애플리케이션 대상 섹션에서 애플리케이션의 이름을 입력하고, 앱 ID를 정의할 때 생성된 번들 식별자를 입력합니다.In the iOS Application Target section, fill in a name for the application and enter the Bundle Identifier that was created when the App ID was defined:

  1. 변경 내용을 Info.plist 파일에 저장합니다.Save the changes to the Info.plist file.

  2. 솔루션 탐색기에서 Entitlements.plist 파일을 두 번 클릭하여 편집용으로 엽니다.In the Solution Explorer, double-click the Entitlements.plist file to open it for editing:

  3. 앱 ID를 만들 때 정의된 설정과 일치하도록 Xamarin.iOS 애플리케이션에 필요한 자격을 선택하고 구성합니다.Select and configure any entitlements required for the Xamarin.iOS application so that they match the setup that was defined when the App ID was created.

  4. 변경 내용을 Entitlements.plist 파일에 저장합니다.Save the changes to the Entitlements.plist file.

새 Entitlements.plist 파일 추가Adding a new Entitlements.plist file

자격은 Entitlements.plist 파일을 통해 앱에 추가됩니다.Entitlements are added to an app via the Entitlements.plist file. 이 파일은 Xamarin.iOS 파일에 기본적으로 포함되지만 이전 프로젝트에는 없을 수 있습니다.This file is included in Xamarin.iOS projects by default but may be missing from older projects.

Xamarin.iOS에 Entitlements.plist 파일을 추가하려면 다음을 수행합니다.To add an Entitlements.plist file to your Xamarin.iOS do the following:

  1. 프로젝트 파일을 마우스 오른쪽 단추로 클릭하고 추가 > 새 파일... 을 선택합니다.Right-click on the project file and browse to Add > New File…:

    파일 추가 바로 가기 메뉴

  2. 새 파일 대화 상자에서 iOS > 속성 목록을 선택하고 Entitlements라고 이름을 지정합니다.In the New File dialog select iOS > Property List and name it Entitlements:

    새 파일 대화 상자

자격 키 참조Entitlement key reference

자격 키는 Entitlements.plist 편집기의 원본 패널을 통해 추가할 수 있습니다.Entitlement keys can be added via the Source panel of the Entitlements.plist editor. 필요한 키는 일반적으로 Entitlements.plist 편집기를 사용할 때 추가되지만 참조용으로 아래에 나열되어 있습니다.The required keys will normally be added when using the Entitlements.plist editor but are listed below for reference.

WalletWallet

  • 설명: 일반적으로 Passbook으로 알려진 Wallet은 패스를 저장 및 관리하는 앱입니다.Description: Formally known as Passbook, wallet is an app that stores and manages passes. 패스는 신용 카드, 상점 카드, 탑승권 또는 티켓일 수 있습니다.These passes may be credit cards, store cards, boarding passes, or tickets.

    • 패스 유형 식별자Pass Type Identifier
      • : com.apple.developer.pass-type-identifiersKeys: com.apple.developer.pass-type-identifiers
      • 문자열: $(TeamIdentifierPrefix)*String: $(TeamIdentifierPrefix)*
  • 참고:Notes:

    • 앱에서 모든 패스 유형을 허용할 수 있습니다.This will enable your app to allow all pass types. 앱을 제한하고 팀 패스 유형의 하위 집합만 허용하려면 문자열 값을 다음과 같이 설정합니다. $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)To restrict your app and only allow a subset of team pass types, set the string value to: $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)

    여기서 pass.$(CFBundleIdentifier)는 에서 만든 패스 ID입니다.Where pass.$(CFBundleIdentifier) is the Pass ID that has been created above

iCloudiCloud

  • 설명: iCloud는 iOS 사용자에게 콘텐츠를 저장하고 디바이스 간에 공유할 수 있는 편리하고 간단한 방법을 제공합니다.Description: iCloud provides iOS users with a convenient and simple way to store their content and share it between devices. 개발자가 iCloud를 사용하여 사용자를 위한 스토리지 수단을 제공할 수 있는 네 가지 방법이 있습니다. 키-값 스토리지, UIDocument 스토리지, CoreData 및 CloudKit을 사용하여 개별 파일 및 디렉터리용 스토리지를 직접 제공합니다.There are four ways developers can use iCloud to provide a means of storage for their users: Key-Value storage, UIDocument Storage, CoreData, and using CloudKit directly to provide storage for Individual files and directories. 자세한 내용은 iCloud 소개 가이드를 참조하세요.For more information on these, refer to the Introduction to iCloud guide.

    • iCloud 문서 및 CloudKitiCloud Documents & CloudKit
      • : com.apple.developer.ubiquity-container-identifiersKeys: com.apple.developer.ubiquity-container-identifiers
      • 문자열: $(TeamIdentifierPrefix)$(CFBundleIdentifier)String: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
    • iCloud KeyValue 스토리지iCloud KeyValue Storage
      • : com.apple.developer.ubiquity-kvstore-identifierKey: com.apple.developer.ubiquity-kvstore-identifier
      • 문자열: $(TeamIdentifierPrefix)$(CFBundleIdentifier)String: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
  • 참고:Notes:

    • $(TeamIdentifierPrefix) 문자열은 developer.apple.com에 로그인하여 Member Center > Your Account(계정) > Developer Account Summary(개발자 계정 요약) 로 이동하여 팀 ID(또는 단일 개발자의 개인 ID)를 얻을 수 있습니다.The $(TeamIdentifierPrefix) string can be located by logging to developer.apple.com and visit the Member Center > Your Account > Developer Account Summary to get your Team ID (or Individual ID for single developers). 10자로 된 문자열(예: A93A5CM278)입니다.It will be a 10 character string ( A93A5CM278 for example).
    • $(CFBundleIdentifier) 문자열은iCloud로 시작되며 기능 사용 가이드의 단계에 따라 iCloud 컨테이너를 만들 때 설정됩니다.The $(CFBundleIdentifier) string begins with iCloud and is set when the iCloud container is crated as per the steps in the Working with Capabilities guide.
    • $(TeamIdentifierPrefix)$(CFBundleIdentifier) 자리 표시자를 사용할 수 있으며 빌드 시 올바른 값으로 대체됩니다.The $(TeamIdentifierPrefix) and $(CFBundleIdentifier) placeholders can be used and will be substituted for the correct values at build time.

중요

Apple에서는 개발자가 유럽 연합의 GDPR(일반 데이터 보호 규정)을 제대로 처리하는 데 도움이 되는 도구를 제공합니다.Apple provides tools to help developers properly handle the European Union's General Data Protection Regulation (GDPR).

앱 그룹App Groups

  • 설명: 앱 그룹을 사용하면 서로 다른 애플리케이션(또는 애플리케이션과 해당 확장 프로그램)이 공유 파일 스토리지 위치에 액세스할 수 있습니다.Description: An App Group allows different applications (or an application and its extensions) to access a shared file storage location.

    • : com.apple.security.application-groupsKey: com.apple.security.application-groups
    • 문자열: group.$(CFBundleIdentifier)String: group.$(CFBundleIdentifier)

Apple PayApple Pay

  • 설명: Apple pay를 사용하면 사용자의 iOS 디바이스를 통해 실제 상품을 구입할 수 있습니다.Description: Apple pay enables users to pay for physical goods via their iOS device.
    • : com.apple.developer.in-app-paymentsKey: com.apple.developer.in-app-payments
    • 문자열: merchant.your.mechantidString: merchant.your.mechantid

푸시 알림Push Notifications

  • : aps-environmentKey: aps-environment
  • 문자열: development 또는 productionString: development or production

SiriSiri

  • 설명: SiriKit을 통해 iOS 앱은 앱 확장 및 새로운 인텐트와 인텐트 UI 프레임워크를 사용하여 iOS 디바이스에서 Siri 및 맵 앱에 액세스할 수 있는 서비스를 제공할 수 있습니다.Description: SiriKit allows an iOS app to provide services that are accessible to Siri and the Maps app on an iOS device using App Extensions and the new Intents and Intents UI frameworks. 자세한 내용은 SiriKit 소개 가이드를 참조하세요.For more information, refer to the Introduction to SiriKit guide.
    • : com.apple.developer.siriKey: com.apple.developer.siri

개인 VPNPersonal VPN

  • : com.apple.developer.networking.vpn.apiKey: com.apple.developer.networking.vpn.api
  • 문자열: allow-vpnString: allow-vpn

키 집합 공유Keychain Sharing

  • 설명: 앱 개발자는 키 집합 공유를 통해 디바이스 키 집합에 저장된 암호를 동일한 팀에서 개발한 다른 앱과 공유할 수 있습니다.Description: Keychain sharing enables app developers to share passwords that are stored in the device keychain with other apps developed by the same team. 문자열에 키 집합 액세스 그룹 식별자를 전달하여 액세스를 제한할 수 있습니다.Access can be restricted by passing a keychain access group identifier in the string.
    • : keychain-access-groupsKey: keychain-access-groups
    • 문자열: $(AppIdentifierPrefix) $(CFBundleIdentifier)String: $(AppIdentifierPrefix) $(CFBundleIdentifier)

내부 앱 오디오Inter-App Audio

  • 설명: 개발자는 내부 앱 오디오를 통해 앱 사이에 오디오를 스트리밍할 수 있습니다.Description: Inter-App Audio enables developers to stream audio between apps.
    • : inter-app-audioKey: inter-app-audio
    • 부울:Boolean: YES

연결된 도메인Associated Domains

  • 설명: 범용 링크로 처리해야 하는 연결된 도메인은 이 자격과 함께 전달해야 합니다.Description: Associated domains that should be handled as universal links should be passed with this entitlement. 범용 링크는 앱과 웹 사이트 사이의 딥 링크 설정을 허용하기 위해 구현될 수 있습니다.Universal links can be implemented to allow deep linking between your app and website. 앱이 지원하는 각 도메인에 항목을 제공해야 하고 각 항목은 applinks:로 시작해야 합니다.You should provide an entry to each domain that your app supports and each entry should begin with applinks:
    • : com.apple.developer.associated-domainsKey: com.apple.developer.associated-domains
    • 문자열: webcredentials:example.comString: webcredentials:example.com

데이터 보호Data Protection

  • 설명: 데이터 보호를 사용하도록 설정하면 기본 제공된 암호화 하드웨어를 사용하여 앱에 사용되는 중요한 데이터가 암호화된 형식으로 저장됩니다.Description: Enabling data protection uses built-in encryption hardware to store sensitive data used in your app in an encrypted format. 기본적으로 보호 수준은 완전 보호(디바이스가 잠금 해제된 경우에만 파일에 액세스 가능)로 설정됩니다.By default, the level of protection is set to complete protection (files are only accessible when then device is unlocked).
    • : com.apple.developer.default-data-protectionKey: com.apple.developer.default-data-protection
    • 문자열: NSFileProtectionCompleteString: NSFileProtectionComplete

HomeKitHomeKit

  • 설명: HomeKit 프레임워크는 지원되는 홈 자동화 디바이스(모두 iOS 디바이스)를 설정, 구성 및 관리하기 위한 플랫폼을 제공합니다.Description: The HomeKit framework provides a platform for setting up, configuring, and managing supported home automation devices – all from an iOS device. HomeKit 사용에 대한 자세한 내용은 HomeKit 소개 가이드를 참조하세요.For more information on using HomeKit, refer to the Introduction to HomeKit guide.
    • : com.apple.developer.homekitKey: com.apple.developer.homekit
    • 부울:Boolean: YES

HealthKitHealthKit

  • 설명: HealthKit은 건강 관련 정보를 위한 중앙 집중식의 조정된 보안 데이터 저장소를 제공하는 iOS 8에 도입된 프레임워크입니다.Description: HealthKit is a framework introduced in iOS 8 that provides a centralized, coordinated, and secure data store for health-related information. HealthKit 사용에 대한 자세한 내용은 HealthKit 소개 가이드를 참조하세요.For more information on using HealthKit, refer to the Introduction to HealthKit guide.
    • : com.apple.developer.healthkitKey: com.apple.developer.healthkit
    • 부울:Boolean: YES

무선 액세서리 구성Wireless Accessory Configuration

  • 설명: 무선 액세서리 구성을 사용하면 앱에서 MFi Wi-Fi 액세서리를 구성할 수 있습니다.Description: Using the Wireless Accessory Configuration allows your app to configure MFi Wi-Fi accessories
    • : com.apple.external-accessory.wireless-configurationKey: com.apple.external-accessory.wireless-configuration
    • 부울:Boolean: YES

ClassKitClassKit

  • 설명: ClassKit을 사용하면 교사가 앱에서 할당된 활동에 대한 학생의 진행 상황을 볼 수 있습니다.Description: ClassKit enables teachers to view student progress on assigned activities in your app.
    • : com.apple.developer.ClassKit-environmentKey: com.apple.developer.ClassKit-environment
    • 문자열: development 또는 productionString: development or production

요약Summary

이 가이드에서는 자격을 소개하고 Mac용 Visual Studio와 Visual Studio에서 사용하는 방법을 설명했습니다.This guide introduced entitlements and how to use them in Visual Studio for Mac and in Visual Studio. 또한 각 기능에 대한 키/값 쌍 참조를 제공했습니다.It also provided a reference of the Key/Value pairs for each capability.