Teilen über


Apple-Datenschutzmanifest

Apple verfügt über eine Datenschutzrichtlinie für Apps, die auf iOS im App Store abzielen. Sie erfordert, dass die App ein Datenschutzmanifest in das App-Bündel einschließt, in dem die Datentypen ihrer .NET MAUI-App oder von Drittanbieter-SDKs und -Paketen sowie die Gründe für die Verwendung aller erforderlichen Grund-APIs aufgelistet sind. Wenn Ihre Verwendung der erforderlichen Grund-APIs oder Drittanbieter-SDKs nicht im Datenschutzmanifest deklariert ist, wird Ihre App möglicherweise vom App Store abgelehnt. Weitere Informationen zu Datenschutzmanifesten finden Sie unter Datenschutzmanifestdateien auf developer.apple.com.

Je nachdem, ob Sie .NET MAUI zum Entwickeln einer App oder zum Bereitstellen von Bindungspaketen für .NET MAUI-Apps verwenden, kann sich die Anforderung für die Bereitstellung eines Datenschutzmanifests unterscheiden.

Datenschutzmanifest für .NET MAUI-Apps

Alle .NET MAUI-Apps, die auf Geräte abzielen, auf denen iOS oder iPadOS ausgeführt wird, erfordern ein Datenschutzmanifest im App-Bündel. Weitere Informationen finden Sie unter Hinzufügen erforderlicher Einträge zum Datenschutzmanifest.

Sie müssen auch Ihren eigenen Code, jeden systemeigenen Code sowie Methoden zur Datensammlung und Nachverfolgung überprüfen und das Datenschutzmanifest entsprechend aktualisieren:

  • Wenn Ihre App oder Ihr SDK Daten über die Person sammelt, die die App verwendet, müssen Sie die Datennutzung in einem Datenschutzmanifest beschreiben. Weitere Informationen finden Sie unter Beschreibung der Datennutzung in Datenschutzmanifesten auf developer.apple.com.
  • Wenn Ihre App oder Ihr SDK .NET-APIs enthält, die die erforderlichen Grund-APIs von Apple aufrufen, müssen Sie ihre Verwendung jeder dieser APIs bewerten und die Gründe für die Verwendung deklarieren. Weitere Informationen zu den erforderlichen Grund-APIs finden Sie unter Beschreibung der Verwendung der erforderlichen Grund-API für developer.apple.com.

Hinweis

Wenn Ihre App SDKs oder Pakete von Drittanbietern enthält, müssen diese Komponenten von Drittanbietern ihre eigenen Datenschutzmanifeste separat enthalten.

Weitere Informationen zum Erstellen eines Datenschutzmanifests finden Sie unter Erstellen eines Datenschutzmanifests.

Wichtig

Die oben genannten Richtlinien sind für Ihren Komfort vorgesehen. Es ist wichtig, dass Sie die Dokumentation von Apple zu Datenschutzmanifestdateien lesen, bevor Sie ein Datenschutzmanifest für Ihr Projekt erstellen.

Datenschutzmanifest für Bindungsprojekte

Bindungsprojekte sind in zwei Kategorien unterteilt: statische Frameworkbindungen und dynamische Frameworkbindungen. Ein Datenschutzmanifest sollte im Framework enthalten und im Bündel des Frameworks platziert sein. Wenn es korrekt platziert ist, wird das Bindungsprojekt es automatisch zum App Bundle hinzufügen, sodass App-Entwickler keine Gründe für die Verwendung der Framework-API angeben müssen. Weitere Informationen finden Sie unter Platzieren von Inhalten in einem Bündel.

Für ein dynamisches Framework wird das Framework dem App Bundle hinzugefügt. Das Manifest der Datenschutzrichtlinie wird an dem Ort hinzugefügt, an dem der App Store es erwartet, und der App-Entwickler muss nichts tun.

Derzeit müssen App-Entwickler beim Binden eines statischen Frameworks das Datenschutzmanifest, das im statischen Framework enthalten ist, manuell mit dem App-Datenschutzmanifest zusammenführen. Dies ist darauf zurückzuführen, dass statische Bibliotheken in die Hauptbinärdatei der App verknüpft sind, wodurch das Framework überflüssig wird.

Erstellen eines Datenschutzmanifests

Um Ihrem .NET MAUI-App-Projekt ein Datenschutzmanifest hinzuzufügen, fügen Sie eine neue XML-Datei namens PrivacyInfo.xcprivacy zum Ordner Platforms/iOS Ihres App-Projekts hinzu. Stellen Sie sicher, dass die Datei "PrivacyInfo.xcprivacy" keine .xml Erweiterung aufweist. Fügen Sie dann der Datei den folgenden XML-Code hinzu:

<?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/>
</plist>

Bearbeiten Sie dann Ihre .NET MAUI-App-Projektdatei (*.csproj), und fügen Sie unten im Stammelement <Project> das folgende Buildelement für iOS hinzu:

<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
    <BundleResource Include="Platforms\iOS\PrivacyInfo.xcprivacy" LogicalName="PrivacyInfo.xcprivacy" />
</ItemGroup>

Dadurch wird sichergestellt, dass das Datenschutzmanifest im Stammverzeichnis des Bundles in die iOS-App verpackt wird.

Hinzufügen erforderlicher Einträge zum Datenschutzmanifest

Alle .NET MAUI-Apps, die auf Geräte abzielen, auf denen iOS oder iPadOS ausgeführt wird, erfordern ein Datenschutzmanifest im App-Bündel. Dies liegt an der .NET-Laufzeit und der Basisklassenbibliothek (Base Class Library, BCL), die erforderliche Grund-APIs verwenden, die unabhängig vom Linkermodus nicht entfernt werden. Die drei API-Kategorien und die zugehörigen Gründe, die sich im Datenschutzmanifest in einer .NET MAUI-App befinden müssen, sind in der folgenden Tabelle aufgeführt:

API-Kategorie `Reason` Verknüpfung
NSPrivacyAccessedAPICategoryFileTimestamp C617.1 Zeitstempel-APIs für Dateien
NSPrivacyAccessedAPICategorySystemBootTime 35F9.1 Systemstartzeit-APIs
NSPrivacyAccessedAPICategoryDiskSpace E174.1 Festplattenspeicher-APIs

Um diese Einträge zu Ihrem Datenschutzmanifest hinzuzufügen, öffnen Sie die Datei "PrivacyInfo.xcprivacy" in einem Text-Editor, und fügen Sie den NSPrivacyAccessAPITypes Schlüssel hinzu, wobei anschließend jeder erforderliche Grund für die API-Kategorieverwendung hinzugefügt wird:

<?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>NSPrivacyAccessedAPITypes</key>
    <array>
    </array>
</dict>
</plist>

Fügen Sie dann die NSPrivacyAccessedAPICategoryFileTimestamp Kategorie mit Grund C617.1, NSPrivacyAccessedAPICategorySystemBootTime Kategorie mit Grund 35F9.1 und NSPrivacyAccessedAPICategoryDiskSpace Kategorie mit Grund E174.1 zum NSPrivacyAccessedAPITypes Array im Datenschutzmanifest hinzu:

<?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>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>35F9.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>E174.1</string>
            </array>
        </dict>       
    </array>
</dict>
</plist>

Diese Einträge enthalten das für Ihre App benötigte Minimum. Wenn Sie eine der erforderlichen Grund-APIs auf eine Weise verwenden, die nicht durch die bereitgestellten Grundcodes abgedeckt ist, müssen Sie zusätzliche Grundcodes hinzufügen, um Ihre Verwendung der API zu unterstützen. Weitere Informationen zur API-Verwendung in der .NET-Runtime, .NET Base Class Library (BCL), .NET für iOS und .NET MAUI, die dazu führen kann, dass Sie zusätzliche Grundcodes benötigen, finden Sie unter den Links im Abschnitt Siehe auch.

Wenn Ihre .NET MAUI-App die API Einstellungen verwendet oder Sie die NSUserDefaults-API direkt verwenden, müssen Sie die Gründe für die Verwendung in Ihr Datenschutzmanifest aufnehmen. Verwenden Sie die Zeichenfolge NSPrivacyAccessedAPICategoryUserDefaults als Wert für den NSPrivacyAccessedAPIType Schlüssel in Ihrem NSPrivacyAccessedAPITypes Wörterbuch. Wenn Ihre App oder Ihr SDK beispielsweise die NSUserDefaults-API direkt oder indirekt über die API Einstellungen von .NET MAUI verwendet, sollte Ihre Datei PrivacyInfo.xcprivacy ein zusätzliches dict-Element im Array des Schlüssels NSPrivacyAccessedAPITypes enthalten:

<?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>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategorySystemBootTime</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>35F9.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryDiskSpace</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>E174.1</string>
            </array>
        </dict>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryUserDefaults</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>CA92.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

Sie müssen einen oder mehrere Grundcodes von Benutzerstandard-APIs auf developer.apple.com bereitstellen. Fügen Sie einen oder mehrere der folgenden Grundcodes hinzu, um die richtige Verwendung anzugeben:

  • CA92.1: Zugriff auf die Benutzerstandardwerte nur in Ihrer Anwendung.
  • 1C8F.1: Zugriff auf Benutzerstandardwerte von Apps, App-Erweiterungen und App-Clips, die Mitglieder derselben App-Gruppe sind.
  • C56D.1: Zugriff auf Benutzerstandardwerte über ein SDK.
  • AC6B.1: Zugriff auf Benutzerstandardwerte zu Lesen des Schlüssels „com.apple.configuration.managed“ oder „com.apple.feedback.managed“

Wichtig

Die Datei "PrivacyInfo.xcprivacy" einer App muss möglicherweise aktualisiert werden, wenn Sie den Code in Ihrer App ändern. Dies umfasst das Hinzufügen eines NuGet-Pakets oder Bindungsprojekts zu Ihrer App, das in die erforderlichen Grund-APIs von Apple aufruft.

Weitere Informationen

Verwenden Sie die folgenden Links, um mehr über die erforderlichen Gründe für die Verwendung der API in .NET MAUI, .NET for iOS und der .NET-Runtime und BCL zu erfahren: