Arbeiten mit Berechtigungen in Xamarin.iOSWorking with entitlements in Xamarin.iOS

Berechtigungen sind besondere App-Funktionen und Sicherheitsberechtigungen, die Anwendungen gewährt werden, die für deren Verwendung konfiguriert sind.Entitlements are special app capabilities and security permissions granted to applications that are correctly configured to use them.

In iOS werden Apps in einer Sandbox ausgeführt, die einige Regeln bereitstellt, die den Zugriff zwischen Anwendungen und bestimmten Systemressourcen oder Benutzerdaten einschränken.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. Berechtigungen werden verwendet, um eine Erweiterung der Sandbox vom System anzufordern, um Ihrer App zusätzliche Funktionen zu geben.Entitlements are used to request that the system expand the sandbox to give your app additional capabilities.

Um die Funktionen Ihrer App zu erweitern, muss eine Berechtigung in der entitlements.plist-Datei Ihrer App gewährt werden.To extend the capabilities of your app, an entitlement must be provided in your app’s Entitlements.plist file. Nur bestimmte Funktionen können erweitert werden. Sie sind im Leitfaden Working with Capabilities (Arbeit mit Funktionen) aufgelistet und werden unten beschrieben.Only certain capabilities can be extended and these are listed in the Working with Capabilities guide and described below. Berechtigungen werden als Schlüssel-Wert-Paare an das System übergeben. Für gewöhnlich ist ein Paar pro Funktion erforderlich.Entitlements are passed to the system as a Key/Value pair, and generally only one is required per capability. Die spezifischen Schlüssel und Werte werden im Abschnitt Referenz für Berechtigungsschlüssel weiter unten in diesem Artikel beschrieben.The specific Keys and Values are described in the Entitlement key reference section later in this guide. Visual Studio für Mac und Visual Studio stellen über den Entitlements.plist-Editor eine unkomplizierte Benutzeroberfläche zum Hinzufügen von Berechtigungen zu einer Xamarin.iOS-App zur Verfügung.Visual Studio for Mac and Visual Studio provide a clear interface for adding entitlements in a Xamarin.iOS app through the Entitlements.plist editor. In diesem Artikel wird der entitlements.plist-Editor vorgestellt und beschrieben, wie Sie diesen verwenden können.This guide introduces the Entitlements.plist editor and how to use it. Zudem wird eine Referenz für alle Berechtigungen zur Verfügung gestellt, die einem iOS-Projekt für jede Funktion hinzugefügt werden können.It also provides a reference of all the entitlements that can be added to an iOS project for each capability.

Berechtigungen und BereitstellungEntitlements and provisioning

Die Entitlements.plist-Datei wird verwendet, um Berechtigungen anzugeben und das Anwendungsbündel zu signieren.The Entitlements.plist file is used to specify entitlements and is used to sign the application bundle.

Allerdings müssen einige zusätzliche Bereitstellungen getätigt werden, um sicherzustellen, dass die App ordnungsgemäß codesigniert wird.However, some additional provisioning is required to ensure that the app is code signed correctly. Das verwendete Bereitstellungsprofil muss eine App-ID enthalten, für die die erforderlichen Funktionen aktiviert sind.The provisioning profile used must contain an App ID that has the required capability enabled. Informationen, wie Sie dies erreichen, finden Sie unter Working with Capabilities (Arbeit mit Funktionen).For information on how to do this, refer to the Working with Capabilities guide.

Wichtig

Die Entitlements.plist-Datei hilft beim Ausfüllen der korrekten Eigenschaften für eine Anwendung mit Funktionen. Allerdings kann Sie kein Bereitstellungsprofil erstellen, da Sie nicht mit einem Apple-Entwicklerkonto verknüpft ist.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. Sie müssen trotzdem ein Bereitstellungsprofil im Entwicklerportal erstellen, um die Anwendung bereitzustellen und zu verteilen.You will still need to generate a provisioning profile using the developer portal to deploy and distribute the application.

Festlegen von Berechtigungen in einem Xamarin.iOS-ProjektSet entitlements in a Xamarin.iOS project

Beim Definieren Ihrer App-ID müssen Sie zusätzlich zur Auswahl und Konfiguration der erforderlichen Anwendungsdienste die Berechtigungen im Xamarin.iOS-Projekt konfigurieren, indem Sie sowohl die info.plist- als auch die entitlements.plist-Datei konfigurieren.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.

Um die Berechtigungen in Visual Studio für Mac zu konfigurieren, gehen Sie folgendermaßen vor:To configure the entitlements in Visual Studio for Mac, do the following:

  1. Doppelklicken Sie im Lösungspad auf die Datei Info.plist, um sie zu öffnen.In the Solution pad, double-click the Info.plist file to open it.

  2. Tragen Sie im Abschnitt Identität den Namen für Ihre Anwendung ein, und geben Sie die Bundle-ID ein, die Sie beim Definieren der App-ID erstellt haben:In the Identity section, fill in a name for the application and enter the Bundle Identifier that was created when the App ID was defined:

    Eingeben einer Bundle-ID

  3. Speichern Sie die Änderungen an der info.plist-Datei.Save the changes to the Info.plist file.

  4. Doppelklicken Sie im Lösungspad auf die Entitlements.plist-Datei, um sie zur Bearbeitung zu öffnen:In the Solution pad, double-click the Entitlements.plist file to open it for editing:

    Bearbeiten der Berechtigungen

  5. Die Berechtigungen für Ihre Xamarin.iOS-Anwendung müssen so ausgewählt und konfiguriert werden, dass sie mit den Einstellungen übereinstimmen, die Sie beim Erstellen der App-ID festgelegt haben.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.

  6. Speichern Sie die Änderungen an der entitlements.plist-Datei.Save the changes to the Entitlements.plist file.

Hinzufügen einer neuen „entitlements.plist“-DateiAdding a new Entitlements.plist file

Berechtigungen werden einer App mit der „entitlements.plist“-Datei hinzugefügt.Entitlements are added to an app via the Entitlements.plist file. Diese Datei ist in Xamarin.iOS-Projekten standardmäßig enthalten, fehlt aber möglicherweise in älteren Projekten.This file is included in Xamarin.iOS projects by default but may be missing from older projects.

Um eine „entitlements.plist“-Datei in Ihrer Xamarin.iOS-Anwendung einzufügen, führen Sie Folgendes aus:To add an Entitlements.plist file to your Xamarin.iOS do the following:

  1. Klicken Sie mit der rechten Maustaste auf die Projektdatei, und navigieren Sie dann zu Hinzufügen > Neue Datei... :Right-click on the project file and browse to Add > New File…:

    Kontextmenü „Dateien hinzufügen“

  2. Klicken Sie im Dialogfeld „Neue Datei“ auf iOS > Eigenschaftenliste, und benennen Sie sie „Berechtigungen“:In the New File dialog select iOS > Property List and name it Entitlements:

    Dialogfeld „Neue Datei“

Referenz zu BerechtigungsschlüsselnEntitlement key reference

Berechtigungsschlüssel können über den Bereich „Quelle“ im „entitlements.plist“-Editor hinzugefügt werden.Entitlement keys can be added via the Source panel of the Entitlements.plist editor. Die erforderlichen Schlüssel werden normalerweise hinzugefügt, wenn Sie den entitlements.plist-Editor verwenden. Sie sind zur Referenz auch unten aufgelistet.The required keys will normally be added when using the Entitlements.plist editor but are listed below for reference.

WalletWallet

  • Beschreibung: Wallet (früher als „Passbook“ bekannt) ist eine App, in der Pässe und Tickets gespeichert und verwaltet werden.Description: Formally known as Passbook, wallet is an app that stores and manages passes. Diese Pässe können Kreditkarten, Kundenkarten, Bordkarten oder Tickets sein.These passes may be credit cards, store cards, boarding passes, or tickets.

    • PasstypbezeichnerPass Type Identifier
      • Schlüssel: com.apple.developer.pass-type-identifiersKeys: com.apple.developer.pass-type-identifiers
      • Zeichenfolge: $(TeamIdentifierPrefix)*String: $(TeamIdentifierPrefix)*
  • Anmerkungen:Notes:

    • So akzeptiert Ihre App alle Passtypen.This will enable your app to allow all pass types. Um Ihre App einzuschränken und nur eine Teilmenge von Teampasstypen zu erlauben, legen Sie den Zeichenfolgenwert auf $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier) fest.To restrict your app and only allow a subset of team pass types, set the string value to: $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier)

    Dort wo „$(CFBundleIdentifier)“ die Pass-ID ist, die oben erstellt wurdeWhere pass.$(CFBundleIdentifier) is the Pass ID that has been created above

iCloudiCloud

  • Beschreibung: iCloud stellt iOS-Benutzern einen praktischen und einfachen Weg bereit, um ihre Inhalte zu speichern und diese zwischen Geräten freizugeben.Description: iCloud provides iOS users with a convenient and simple way to store their content and share it between devices. Entwicklern stehen vier Methoden zur Verwendung von iCloud zur Verfügung, um ihren Benutzern eine Speichermöglichkeit bereitzustellen: Der Key-Value-Speicher, der UIDocument-Speicher, CoreData und die direkte Verwendung von CloudKit, um Speicher für einzelne Dateien und Verzeichnisse bereitzustellen.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. Weitere Informationen dazu finden Sie im Handbuch „Introduction to iCloud (Einführung in iCloud)“.For more information on these, refer to the Introduction to iCloud guide.

    • iCloud-Dokumente & CloudKitiCloud Documents & CloudKit
      • Schlüssel: com.apple.developer.ubiquity-container-identifiersKeys: com.apple.developer.ubiquity-container-identifiers
      • Zeichenfolge: $(TeamIdentifierPrefix)$(CFBundleIdentifier)String: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
    • iCloud-SchlüsselwertspeicheriCloud KeyValue Storage
      • Schlüssel: com.apple.developer.ubiquity-kvstore-identifierKey: com.apple.developer.ubiquity-kvstore-identifier
      • Zeichenfolge: $(TeamIdentifierPrefix)$(CFBundleIdentifier)String: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
  • Anmerkungen:Notes:

    • Die Zeichenfolge $(TeamIdentifierPrefix) können Sie finden, indem Sie sich bei developer.apple.com anmelden und zu Member Center > Your Account > Developer Account Summary (Mitgliedcenter > Ihr Konto > Zusammenfassung Developer-Konto) navigieren, um Ihre Team-ID abzurufen (oder Ihre eigene ID, wenn Sie ein einzelner Entwickler sind).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). Dabei handelt es sich um eine 10-stellige Zeichenfolge (z.B. A93A5CM278).It will be a 10 character string ( A93A5CM278 for example).
    • Die Zeichenfolge $(CFBundleIdentifier) beginnt mit iCloud und wird festgelegt, wenn der iCloud-Container mit den in Arbeit mit Funktionen beschriebenen Schritten erstellt wird.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.
    • Die Platzhalter $(TeamIdentifierPrefix) und $(CFBundleIdentifier) können verwendet werden und werden bei der Erstellung durch die entsprechenden Werte ersetzt.The $(TeamIdentifierPrefix) and $(CFBundleIdentifier) placeholders can be used and will be substituted for the correct values at build time.

Wichtig

Apple stellt Tools zur Verfügung, die Entwickler dabei unterstützen, die Datenschutz-Grundverordnung (DSGVO) der Europäischen Union umzusetzen.Apple provides tools to help developers properly handle the European Union's General Data Protection Regulation (GDPR).

App-GruppenApp Groups

  • Beschreibung: Durch eine App-Gruppe können unterschiedliche Anwendungen (oder eine Anwendung und ihre Erweiterungen) auf einen freigegebenen Dateispeicherort zugreifen.Description: An App Group allows different applications (or an application and its extensions) to access a shared file storage location.

    • Schlüssel: com.apple.security.application-groupsKey: com.apple.security.application-groups
    • Zeichenfolge: group.$(CFBundleIdentifier)String: group.$(CFBundleIdentifier)

Apple PayApple Pay

  • Beschreibung: Apple Pay ermöglicht Benutzern das Bezahlen physischer Güter über das iOS-Gerät.Description: Apple pay enables users to pay for physical goods via their iOS device.
    • Schlüssel: com.apple.developer.in-app-paymentsKey: com.apple.developer.in-app-payments
    • Zeichenfolge: merchant.your.mechantidString: merchant.your.mechantid

PushbenachrichtigungenPush Notifications

  • Schlüssel: aps-environmentKey: aps-environment
  • Zeichenfolge: development oder productionString: development or production

SiriSiri

  • Beschreibung: Durch SiriKit kann eine iOS-App Dienste bereitstellen, auf die die Apps „Siri“ und „Karten“ auf einem iOS-Gerät mit App-Erweiterungen und den neuen Intents- und Intents UI-Frameworks zugreifen können.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. Weitere Informationen dazu finden Sie im Handbuch „Introduction to iCloud (Einführung in SiriKit)“.For more information, refer to the Introduction to SiriKit guide.
    • Schlüssel: com.apple.developer.siriKey: com.apple.developer.siri

Persönliches VPNPersonal VPN

  • Schlüssel: com.apple.developer.networking.vpn.apiKey: com.apple.developer.networking.vpn.api
  • Zeichenfolge: allow-vpnString: allow-vpn

Keychain-FreigabeKeychain Sharing

  • Beschreibung: Durch die Freigabe mit Keychain können App-Entwickler Kennwörter für andere vom selben Team entwickelten Apps freigeben, die auf dem Gerät in Keychain gespeichert sind.Description: Keychain sharing enables app developers to share passwords that are stored in the device keychain with other apps developed by the same team. Der Zugriff kann eingeschränkt werden, indem Sie eine Gruppen-ID für den Zugriff auf Keychain in der Zeichenfolge übergeben.Access can be restricted by passing a keychain access group identifier in the string.
    • Schlüssel: keychain-access-groupsKey: keychain-access-groups
    • Zeichenfolge: $(AppIdentifierPrefix) $(CFBundleIdentifier)String: $(AppIdentifierPrefix) $(CFBundleIdentifier)

Inter-App-AudioInter-App Audio

  • Beschreibung: Mit Inter-App-Audio können Entwickler Audio zwischen Apps streamen.Description: Inter-App Audio enables developers to stream audio between apps.
    • Schlüssel: inter-app-audioKey: inter-app-audio
    • Boolesch: YESBoolean: YES

Zugehörige DomänenAssociated Domains

  • Beschreibung: Zugehörige Domänen, die als universelle Links behandelt werden sollen, sollten mit dieser Berechtigung übergeben werden.Description: Associated domains that should be handled as universal links should be passed with this entitlement. Universelle Links können implementiert werden, um Deep Linking zwischen Ihrer App und Ihrer Website zu ermöglichen.Universal links can be implemented to allow deep linking between your app and website. Sie sollten einen Eintrag für jede Domäne bereitstellen, die Ihre App unterstützt. Dabei sollte jeder Eintrag mit applinks: beginnen.You should provide an entry to each domain that your app supports and each entry should begin with applinks:
    • Schlüssel: com.apple.developer.associated-domainsKey: com.apple.developer.associated-domains
    • Zeichenfolge: webcredentials:example.comString: webcredentials:example.com

Schutz von DatenData Protection

  • Beschreibung: Beim Aktivieren des Schutzes von Daten wird die integrierte Verschlüsselungshardware verwendet, um sensible Daten zu speichern, die in Ihrer App in verschlüsseltem Format verwendet werden.Description: Enabling data protection uses built-in encryption hardware to store sensitive data used in your app in an encrypted format. Die Standardschutzebene ist auf vollständigen Schutz festgelegt. Dabei kann nur auf Dateien zugegriffen werden, wenn das Gerät entsperrt ist.By default, the level of protection is set to complete protection (files are only accessible when then device is unlocked).
    • Schlüssel: com.apple.developer.default-data-protectionKey: com.apple.developer.default-data-protection
    • Zeichenfolge: NSFileProtectionCompleteString: NSFileProtectionComplete

HomeKitHomeKit

  • Beschreibung: Das HomeKit-Framework bietet eine Plattform zum Einrichten, Konfigurieren und Verwalten unterstützter Heimautomatisierungsgeräte – und das alles von einem iOS-Gerät aus.Description: The HomeKit framework provides a platform for setting up, configuring, and managing supported home automation devices – all from an iOS device. Weitere Informationen zu HomeKit finden Sie im Leitfaden „Introduction to HomeKit (Einführung in HomeKit)“.For more information on using HomeKit, refer to the Introduction to HomeKit guide.
    • Schlüssel: com.apple.developer.homekitKey: com.apple.developer.homekit
    • Boolesch: YESBoolean: YES

HealthKitHealthKit

  • Beschreibung: HealthKit ist ein mit iOS 8 eingeführtes Framework, das einen zentralisierten, koordinierten und sicheren Datenspeicher für Informationen bietet, die mit der Integrität der App in Verbindung stehen.Description: HealthKit is a framework introduced in iOS 8 that provides a centralized, coordinated, and secure data store for health-related information. Weitere Informationen zu HomeKit finden Sie im Leitfaden „Introduction to HealthKit (Einführung in HealthKit)“.For more information on using HealthKit, refer to the Introduction to HealthKit guide.
    • Schlüssel: com.apple.developer.healthkitKey: com.apple.developer.healthkit
    • Boolesch: YESBoolean: YES

Konfiguration für drahtloses ZubehörWireless Accessory Configuration

  • Beschreibung: Die Konfiguration für drahtloses Zubehör ermöglicht Ihrer Anwendung die Konfiguration von MFi-WLAN-Zubehör.Description: Using the Wireless Accessory Configuration allows your app to configure MFi Wi-Fi accessories
    • Schlüssel: com.apple.external-accessory.wireless-configurationKey: com.apple.external-accessory.wireless-configuration
    • Boolesch: YESBoolean: YES

ClassKitClassKit

  • Beschreibung: ClassKit ermöglicht es Lehrkräften, den Fortschritt der Schüler und Studenten bei den zugewiesenen Aktivitäten in der App anzuzeigen.Description: ClassKit enables teachers to view student progress on assigned activities in your app.
    • Schlüssel: com.apple.developer.ClassKit-environmentKey: com.apple.developer.ClassKit-environment
    • Zeichenfolge: development oder productionString: development or production

ZusammenfassungSummary

In diesem Leitfaden wurden Berechtigungen und deren Verwendung in Visual Studio für Mac und Visual Studio behandelt.This guide introduced entitlements and how to use them in Visual Studio for Mac and in Visual Studio. Zudem enthält er eine Referenz der Schlüssel-Wert-Paare für jede Funktion.It also provided a reference of the Key/Value pairs for each capability.