Arbeiten mit Berechtigungen in Xamarin.iOS

Berechtigungen sind besondere App-Funktionen und Sicherheitsberechtigungen, die Anwendungen gewährt werden, die für deren Verwendung konfiguriert sind.

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. Berechtigungen werden verwendet, um eine Erweiterung der Sandbox vom System anzufordern, um Ihrer App zusätzliche Funktionen zu geben.

Um die Funktionen Ihrer App zu erweitern, muss eine Berechtigung in der entitlements.plist-Datei Ihrer App gewährt werden. Nur bestimmte Funktionen können erweitert werden. Sie sind im Leitfaden Working with Capabilities (Arbeit mit Funktionen) aufgelistet und werden unten beschrieben. Berechtigungen werden als Schlüssel-Wert-Paare an das System übergeben. Für gewöhnlich ist ein Paar pro Funktion erforderlich. Die spezifischen Schlüssel und Werte werden im Abschnitt Referenz für Berechtigungsschlüssel weiter unten in diesem Artikel beschrieben. 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. In diesem Artikel wird der entitlements.plist-Editor vorgestellt und beschrieben, wie Sie diesen verwenden können. 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.

Berechtigungen und Bereitstellung

Die entitlements.plist-Datei wird verwendet, um Berechtigungen anzugeben und das Anwendungsbündel zu signieren.

Allerdings müssen einige zusätzliche Bereitstellungen getätigt werden, um sicherzustellen, dass die App ordnungsgemäß codesigniert wird. Das verwendete Bereitstellungsprofil muss eine App-ID enthalten, für die die erforderlichen Funktionen aktiviert sind. Informationen, wie Sie dies erreichen, finden Sie unter Working with Capabilities (Arbeit mit Funktionen).

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. Sie müssen trotzdem ein Bereitstellungsprofil im Entwicklerportal erstellen, um die Anwendung bereitzustellen und zu verteilen.

Festlegen von Berechtigungen in einem Xamarin.iOS-Projekt

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.

Um die Berechtigungen in Visual Studio für Mac zu konfigurieren, gehen Sie folgendermaßen vor:

  1. Doppelklicken Sie im Lösungspad auf die Datei Info.plist, um sie zu öffnen.

  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:

    Enter a Bundle Identifier

  3. Speichern Sie die Änderungen an der info.plist-Datei.

  4. Doppelklicken Sie im Lösungspad auf die Entitlements.plist-Datei, um sie zur Bearbeitung zu öffnen:

    Editing the Entitlements

  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.

  6. Speichern Sie die Änderungen an der entitlements.plist-Datei.

Hinzufügen einer neuen „entitlements.plist“-Datei

Berechtigungen werden einer App mit der „entitlements.plist“-Datei hinzugefügt. Diese Datei ist in Xamarin.iOS-Projekten standardmäßig enthalten, fehlt aber möglicherweise in älteren Projekten.

Um eine „entitlements.plist“-Datei in Ihrer Xamarin.iOS-Anwendung einzufügen, führen Sie Folgendes aus:

  1. Klicken Sie mit der rechten Maustaste auf die Projektdatei, und navigieren Sie zu "Neue Datei hinzufügen > ...":

    Add Files context menu

  2. Wählen Sie im Dialogfeld "Neue Datei" die Liste der iOS-Eigenschaften > aus, und nennen Sie sie "Berechtigungen":

    New File dialog

Referenz zu Berechtigungsschlüsseln

Berechtigungsschlüssel können über den Bereich „Quelle“ im „entitlements.plist“-Editor hinzugefügt werden. Die erforderlichen Schlüssel werden normalerweise hinzugefügt, wenn Sie den entitlements.plist-Editor verwenden. Sie sind zur Referenz auch unten aufgelistet.

Brieftasche

  • Beschreibung: Früher „Passbook“. Wallet ist eine App in der Pässe und Tickets gespeichert und verwaltet werden. Diese Pässe können Kreditkarten, Kundenkarten, Bordkarten oder Tickets sein.

    • Passtypbezeichner
      • Schlüssel: com.apple.developer.pass-type-identifiers
      • Zeichenfolge: $(TeamIdentifierPrefix)*
  • Hinweise:

    • So akzeptiert Ihre App alle Passtypen. Um Ihre App einzuschränken und nur eine Teilmenge von Teampasstypen zu erlauben, legen Sie den Zeichenfolgenwert auf $(TeamIdentifierPrefix)pass.$(CFBundleIdentifier) fest.

    Dort wo „$(CFBundleIdentifier)“ die Pass-ID ist, die oben erstellt wurde

iCloud

  • Beschreibung: iCloud stellt iOS-Benutzern einen praktischen und einfachen Weg bereit, um ihre Inhalte zu speichern und diese zwischen Geräten freizugeben. Es gibt vier Möglichkeiten, wie Entwickler iCloud verwenden können, um ihren Benutzern Speicher bereitzustellen: Schlüssel-Wert-Speicher, UIDocument-Speicher, CoreData und das direkte Verwenden von CloudKit für das Bereitstellen von Speicher für einzelne Dateien und Verzeichnisse. Weitere Informationen dazu finden Sie in diesem Leitfaden mit einer Einführung in iCloud.

    • iCloud-Dokumente & CloudKit
      • Schlüssel: com.apple.developer.ubiquity-container-identifiers
      • Zeichenfolge: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
    • iCloud-Schlüsselwertspeicher
      • Schlüssel: com.apple.developer.ubiquity-kvstore-identifier
      • Zeichenfolge: $(TeamIdentifierPrefix)$(CFBundleIdentifier)
  • Hinweise:

    • Die $(TeamIdentifierPrefix) Zeichenfolge kann sich befinden, indem Sie sich bei developer.apple.com anmelden und die Zusammenfassung ihres Kontoentwicklerkontos im Member Center >> besuchen, um Ihre Team-ID (oder einzelne ID für einzelne Entwickler) abzurufen. Dabei handelt es sich um eine 10-stellige Zeichenfolge (z.B. A93A5CM278).
    • Die Zeichenfolge $(CFBundleIdentifier) beginnt mit iCloud und wird festgelegt, wenn der iCloud-Container mit den in Arbeit mit Funktionen beschriebenen Schritten erstellt wird.
    • Die Platzhalter $(TeamIdentifierPrefix) und $(CFBundleIdentifier) können verwendet werden und werden bei der Erstellung durch die entsprechenden Werte ersetzt.

Wichtig

Apple stellt Tools zur Verfügung, die Entwickler dabei unterstützen, die Datenschutz-Grundverordnung (DSGVO) der Europäischen Union umzusetzen.

App-Gruppen

  • Beschreibung: Durch eine App-Gruppe können unterschiedliche Anwendungen (oder eine Anwendung und ihre Erweiterungen) auf einen freigegebenen Dateispeicherort zugreifen.

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

Apple Pay

  • Beschreibung: Apple Pay ermöglicht Benutzern das Bezahlen physischer Produkte über Ihr iOS-Gerät.
    • Schlüssel: com.apple.developer.in-app-payments
    • Zeichenfolge: merchant.your.mechantid

Pushbenachrichtigungen

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

Siri

  • 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. Weitere Informationen dazu finden Sie im Handbuch „Introduction to iCloud (Einführung in SiriKit)“.
    • Schlüssel: com.apple.developer.siri

Persönliches VPN

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

Keychain-Freigabe

  • 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. Der Zugriff kann eingeschränkt werden, indem Sie eine Gruppen-ID für den Zugriff auf Keychain in der Zeichenfolge übergeben.
    • Schlüssel: keychain-access-groups
    • Zeichenfolge: $(AppIdentifierPrefix) $(CFBundleIdentifier)

Inter-App-Audio

  • Beschreibung: Mit Inter-App-Audio können Entwickler Audio zwischen Apps streamen.
    • Schlüssel: inter-app-audio
    • Boolescher Wert: YES

Zugehörige Domänen

  • Beschreibung: Zugehörige Domänen, die als universelle Links behandelt werden sollen, sollten mit dieser Berechtigung übergeben werden. Universelle Links können implementiert werden, um Deep Linking zwischen Ihrer App und Ihrer Website zu ermöglichen. Sie sollten einen Eintrag für jede Domäne bereitstellen, die Ihre App unterstützt. Dabei sollte jeder Eintrag mit applinks: beginnen.
    • Schlüssel: com.apple.developer.associated-domains
    • Zeichenfolge: webcredentials:example.com

Schutz von Daten

  • 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. Die Standardschutzebene ist auf vollständigen Schutz festgelegt. Dabei kann nur auf Dateien zugegriffen werden, wenn das Gerät entsperrt ist.
    • Schlüssel: com.apple.developer.default-data-protection
    • Zeichenfolge: NSFileProtectionComplete

HomeKit

  • 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. Weitere Informationen zu HomeKit finden Sie im Leitfaden „Introduction to HomeKit (Einführung in HomeKit)“.
    • Schlüssel: com.apple.developer.homekit
    • Boolescher Wert: YES

HealthKit

  • 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. Weitere Informationen zu HomeKit finden Sie im Leitfaden „Introduction to HealthKit (Einführung in HealthKit)“.
    • Schlüssel: com.apple.developer.healthkit
    • Boolescher Wert: YES

Konfiguration für drahtloses Zubehör

  • Beschreibung: Mit der Drahtlosen Zubehörkonfiguration kann Ihre App MFi-WLAN-Zubehör konfigurieren.
    • Schlüssel: com.apple.external-accessory.wireless-configuration
    • Boolescher Wert: YES

ClassKit

  • Beschreibung: ClassKit ermöglicht es Lehrkräften, den Fortschritt der Schüler und Studenten bei den zugewiesenen Aktivitäten in der App anzuzeigen.
    • Schlüssel: com.apple.developer.ClassKit-environment
    • Zeichenfolge: development oder production

Zusammenfassung

In diesem Leitfaden wurden Berechtigungen und deren Verwendung in Visual Studio für Mac und Visual Studio behandelt. Zudem enthält er eine Referenz der Schlüssel-Wert-Paare für jede Funktion.