Privacy Manifest — was es ist, PrivacyInfo.xcprivacy-Datei und Anforderungen

Autor: IT Sectr Veröffentlicht: 2026-05-20 Lesezeit: 9 Min.

Privacy Manifest (PrivacyInfo.xcprivacy) ist eine Datei, die alle Anwendungen und Drittanbieter-SDKs ab Frühjahr 2024 in den iOS-Build einbinden müssen. Apple verlangt, die Gründe für die Verwendung geschützter APIs (Required Reason API) und die Arten der gesammelten Daten zu deklarieren. Laut Apple Developer Documentation muss jede Binärdatei innerhalb der App — Hauptziel, Frameworks, Swift Package Manager-Abhängigkeiten — ein eigenes Privacy Manifest enthalten.

Wichtige Punkte

  • Privacy Manifest — XML-Datei PrivacyInfo.xcprivacy mit Deklaration der API-Nutzungsgründe
  • Required Reason API — API-Kategorien, die eine verpflichtende Angabe des Grundes erfordern
  • SDK Privacy Manifest — jedes Drittanbieter-SDK muss sein eigenes Manifest bereitstellen
  • Gründe (Reasons) — spezifischer Zweck der API-Nutzung aus Apples genehmigter Liste
  • Frist — ab 1. Mai 2024 müssen alle neuen Builds ein Privacy Manifest enthalten

Was ist Privacy Manifest?

Privacy Manifest ist eine PrivacyInfo.xcprivacy-Datei im property list (XML)-Format, die deklariert, welche Arten von Daten die Anwendung sammelt und warum sie bestimmte APIs verwendet. Apple führte Manifeste als Teil einer Initiative zur Erhöhung der Datenschutztransparenz ein, ähnlich dem Privacy Nutrition Label, jedoch auf Code- und Binärebene.

Der Hauptzweck des Manifests ist die Dokumentation der Nutzung sogenannter Required Reason APIs. Dies sind API-Kategorien, die für das Fingerprinting des Geräts verwendet werden können, daher muss jede Nutzung mit einer Deklaration eines spezifischen Grundes aus Apples genehmigter Liste einhergehen.

Ab dem 1. Mai 2024 lehnt Apple Builds ab, die kein Privacy Manifest enthalten. Dies gilt sowohl für die Hauptziele der Anwendung als auch für alle eingebetteten SDKs und Abhängigkeiten. Laut WWDC 2023 ist das Manifest für alle über den App Store vertriebenen Anwendungen verpflichtend.

Das Manifest muss in jeder Binärdatei vorhanden sein — nicht nur in der Hauptanwendung, sondern auch in jedem Framework und jeder statischen Bibliothek. Wenn ein Drittanbieter-SDK kein Manifest bereitgestellt hat, muss der Entwickler es manuell hinzufügen oder den SDK-Anbieter um ein Update bitten.

Warum Apple Privacy Manifest eingeführt hat

Vor den Manifesten konnten Entwickler umfangreiche System-APIs (Zugriff auf Dateisystem, Datum/Uhrzeit, Systemprotokolle) ohne transparente Erklärung des Verwendungszwecks nutzen. Dies schuf ein Risiko von Datenlecks durch Drittanbieter-SDKs, die ohne Wissen des Entwicklers Informationen sammeln konnten.

Laut Mysk Inc. (2023) verwendeten viele beliebte SDKs APIs für das Geräte-Fingerprinting ohne explizite Notwendigkeit — zum Beispiel das Auslesen der Betriebszeit zur Bestimmung der Zeitzone oder das Scannen von Verzeichnissen zum Sammeln von Metadaten. Privacy Manifest verpflichtet zur Deklaration jeder dieser Aktionen.

Neben Required Reason API enthält das Manifest den Abschnitt NSPrivacyTracking — ein Flag, das angibt, ob die App Tracking verwendet (ATT erforderlich), und NSPrivacyCollectedDataTypes — eine Liste der gesammelten Datentypen im Privacy Nutrition Label-Format.

Unterschied zwischen Privacy Manifest und Privacy Nutrition Label

Privacy Nutrition Label ist eine benutzerseitige Darstellung auf der App-Seite im App Store, die zeigt, welche Daten die App sammelt. Privacy Manifest ist eine technische Datei innerhalb der Binärdatei, die von Apple automatisch überprüft wird. Stimmen die Daten im Manifest nicht mit den Labels in App Store Connect überein, lehnt Apple den Build ab.

Somit ist das Manifest die Quelle der Wahrheit für Apples Überprüfungssystem. Die Datenschutzlabels werden automatisch daraus generiert, aber der Entwickler muss beide Darstellungen aktuell halten. Eine Änderung des Manifests nach der Veröffentlichung erfordert die Einreichung eines neuen Builds zur Überprüfung.

Struktur von PrivacyInfo.xcprivacy

Die Datei PrivacyInfo.xcprivacy verwendet das property list-Format mit einem Wurzeltyp Dictionary. Die wichtigsten Schlüssel der obersten Ebene sind: NSPrivacyTracking (Boolean), NSPrivacyTrackingDomains (Array), NSPrivacyCollectedDataTypes (Array), NSPrivacyAccessedAPITypes (Array).

Schlüssel der obersten Ebene

Der Schlüssel NSPrivacyTracking — ein boolescher Wert, der angibt, ob die App Tracking anwendet (ATT erforderlich). Bei true muss auch NSUserTrackingUsageDescription in Info.plist angegeben werden. Der Schlüssel NSPrivacyTrackingDomains — ein Array von Domains, auf denen Tracking angewendet wird.

Der Schlüssel NSPrivacyCollectedDataTypes — ein Array von Dictionaries, die jeweils einen gesammelten Datentyp beschreiben: Kategorie (NSPrivacyCollectedDataType), Verknüpfung (NSPrivacyCollectedDataLinked), Zweck (NSPrivacyCollectedDataTypePurposes). Zu den Zwecken gehören: Werbung Dritter, Analyse, Produktentwicklung und Personalisierung von Inhalten.

Der Schlüssel NSPrivacyAccessedAPITypes — ein Array von Dictionaries für jede Required Reason API-Kategorie: Kategorie (NSPrivacyAccessedAPITypeReasons) — ein spezifischer Grund aus Apples genehmigter Liste, und NSPrivacyAccessedAPIType — der API-Kategorie-Identifikator.

xml
<!-- PrivacyInfo.xcprivacy -->
<?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>NSPrivacyTracking</key>
    <false/>
    <key>NSPrivacyAccessedAPITypes</key>
    <array>
        <dict>
            <key>NSPrivacyAccessedAPIType</key>
            <string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
            <key>NSPrivacyAccessedAPITypeReasons</key>
            <array>
                <string>C617.1</string>
            </array>
        </dict>
    </array>
</dict>
</plist>

Datenkategorien in NSPrivacyCollectedDataTypes

Die Datentypen werden in mehrere Kategorien unterteilt: Kontaktinformationen (Name, E-Mail, Telefon), Finanzen (Zahlungsdaten), Identifikatoren (IDFA, Benutzer-ID), Nutzungsdaten (Protokolle, Klicks), Diagnose (Absturzprotokolle) und Benutzerinhalte (Fotos, Videos, Dateien). Jede Kategorie wird zusätzlich als „mit Benutzer verknüpft“ oder „nicht verknüpft“ markiert.

Verknüpft bedeutet, dass die Daten mit dem Benutzerkonto verbunden sind; nicht verknüpft bedeutet, dass die Daten aggregiert oder anonymisiert sind. Diese Markierung beeinflusst, wie Apple das Datenschutzlabel anzeigt: verknüpfte Daten werden gelb markiert, nicht verknüpfte — grün.

Welche APIs erfordern eine Angabe von Gründen

Apple hat mehrere API-Kategorien identifiziert, deren Nutzung jeweils mit einem spezifischen Grund aus der genehmigten Liste einhergehen muss. Ein Grund ist ein eindeutiger Code, zum Beispiel C617.1 oder 35F9.1, der einem von Apple erlaubten spezifischen Zweck zugeordnet ist.

Hauptkategorien der Required Reason API

Die Kategorie NSPrivacyAccessedAPICategoryFileTimestamp umfasst APIs für den Zugriff auf Dateizeitstempel (creationDate, modificationDate). Gründe: C617.1 (Dateisynchronisation), 3B52.1 (Backup), 0A2A.1 (Betrugsbekämpfung).

Die Kategorie NSPrivacyAccessedAPICategoryDiskSpace umfasst APIs zur Überprüfung des freien Speicherplatzes (NSFileManager. Überprüfungen (NSFileManager). Gründe: E174.1 (Cache-Verwaltung), 85F4.1 (Inhaltsdownload), B728.1 (Diagnose).

Die Kategorie NSPrivacyAccessedAPICategorySystemBootTime umfasst APIs für den Zugriff auf die Systemstartzeit (Betriebszeit). Nur ein Grund: 35F9.1 (Messung der Sitzungszeit für Analysen). Jede andere Nutzung gilt als Fingerprinting.

Vollständige Liste der API-Kategorien

  • FileTimestamp — Zugriff auf Dateizeitstempel, erlaubt für Synchronisation und Backup
  • DiskSpace — Überprüfung des freien Speicherplatzes, erlaubt für Cache-Verwaltung und Downloads
  • SystemBootTime — Betriebszeit, nur für Sitzungsanalysen erlaubt
  • UserDefaults — Zugriff auf UserDefaults anderer Apps, vollständig verboten
  • ActiveKeyboards — Liste aktiver Tastaturen, erlaubt für IME-Entwickler
  • SystemAperture — Größe der Display-Aussparung, erlaubt für Foto- und AR-Apps

Jede Kategorie hat 1 bis 5 genehmigte Gründe. Der Entwickler muss den Grund wählen, der der tatsächlichen API-Nutzung am genauesten entspricht. Die Angabe eines ungenauen Grundes kann zur Ablehnung des Builds oder zur Kontosperrung führen.

Anforderungen an Drittanbieter-SDKs

Ab dem 1. Mai 2024 müssen alle Drittanbieter-SDKs — sowohl binäre als auch Open-Source — ein Privacy Manifest in ihrem Paket enthalten. Apple überprüft die Manifeste aller Abhängigkeiten, und wenn mindestens ein SDK kein Manifest hat, wird der Build abgelehnt.

Große SDKs (Firebase, Adjust, AppsFlyer, Facebook SDK) haben ihre Pakete bereits aktualisiert. Wenn Ihr Projekt ein wenig bekanntes SDK verwendet, überprüfen Sie dessen Version und aktualisieren Sie es bei Bedarf oder wenden Sie sich an den Entwickler. Eine vorübergehende Lösung besteht darin, manuell ein Manifest für das SDK im Projekt hinzuzufügen, was jedoch aufgrund von Abweichungen bei Updates nicht empfohlen wird.

So erstellen Sie Privacy Manifest in Xcode

Sie können PrivacyInfo.xcprivacy über die integrierte Vorlage in Xcode 15+ oder manuell erstellen. Betrachten wir beide Optionen.

Erstellung über Xcode 15

Xcode 15 enthält eine Privacy Manifest-Vorlage: File → New → File → Resource → Privacy Manifest. Xcode erstellt eine Datei mit grundlegender Struktur und füllt NSPrivacyTracking sowie leere Arrays für API und Daten aus. Nach der Erstellung müssen Sie manuell die Gründe für jede verwendete Required Reason API angeben.

Die Vorlage fügt die Datei automatisch zum Hauptziel hinzu. Wenn das Projekt mehrere Ziele hat (Extensions, Watch app), müssen Sie das Manifest zu jedem hinzufügen. Xcode überprüft das Vorhandensein des Manifests in Abhängigkeiten nicht zur Kompilierungszeit — nur in der Archivierungsphase.

swift
// AppDelegate: Manifestprüfung in der Entwicklungsphase
import Foundation

func validatePrivacyManifest() {
    guard let path = Bundle.main.path(
        forResource: "PrivacyInfo", ofType: "xcprivacy"
    ) else {
        print("PrivacyInfo.xcprivacy nicht gefunden")
        return
    }
    guard let dict = NSDictionary(contentsOfFile: path)
    else { return }
    print("Privacy manifest loaded: \(dict.count) keys")
}

Manuelle Erstellung über XML

Sie können PrivacyInfo.xcprivacy manuell als normale XML property list-Datei erstellen. Erstellen Sie dazu eine Datei mit dem Namen PrivacyInfo.xcprivacy, schreiben Sie den Standard-plist-Header und fügen Sie ein Wurzelwörterbuch mit den erforderlichen Schlüsseln hinzu. Stellen Sie sicher, dass die Datei zum Ziel hinzugefügt wurde (Target Membership).

Die manuelle Methode ist nützlich, wenn Sie einer statischen Bibliothek oder Package Manager-Abhängigkeit ein Manifest hinzufügen müssen, ohne die Xcode-Benutzeroberfläche zu verwenden. Überprüfen Sie nach der Kompilierung mit dem Befehl nm oder durch Archivierung, ob die Datei in der Binärdatei enthalten ist.

Überprüfung des Manifests vor der Veröffentlichung

Bevor Sie den Build an den App Store senden, müssen Sie überprüfen, ob das Privacy Manifest korrekt und vollständig ist. Apple stellt mehrere Überprüfungswerkzeuge bereit.

Integrierter Xcode-Validator

Beim Archivieren eines Projekts (Product → Archive) führt Xcode eine Manifest-Überprüfung durch. Wenn ein Fehler gefunden wird — fehlendes Manifest, falscher Grund, leere Kategorie — schlägt die Archivierung mit einem Fehler fehl. Das Fehlerprotokoll wird im Issue-Navigator angezeigt, der das problematische SDK und die API-Kategorie angibt.

Eine zusätzliche Überprüfung wird auf der Seite von App Store Connect beim Hochladen des Builds durchgeführt. Wenn die Überprüfung fehlschlägt, wird der Build mit einer automatischen E-Mail abgelehnt, die die Kennung der problematischen API und die empfohlene Korrektur enthält.

Überprüfung über die Befehlszeile

Um die Überprüfung zu automatisieren, verwenden Sie Skripte, die die Binärdatei auf die Verwendung von Required Reason APIs analysieren. Apple stellt das libtool-Tool und Symbolüberprüfungsskripte bereit, aber die Community hat bequemere Dienstprogramme entwickelt.

bash
# Suche nach FileTimestamp-API-Nutzung in der Binärdatei
nm MyApp.app/MyApp | grep "NSFileCreationDate"

# Überprüfung des Vorhandenseins von PrivacyInfo.xcprivacy in der Anwendung
find MyApp.app -name "*.xcprivacy"

Häufige Überprüfungsfehler

Der häufigste Fehler ist ein fehlendes Manifest in einem der SDKs. Selbst wenn das Hauptziel ein Manifest enthält, überprüft Apple jede Binärdatei einzeln. Der zweithäufigste Fehler ist ein falscher Grundcode — die Verwendung eines Grundes für eine API-Kategorie mit einer API aus einer anderen Kategorie.

Der dritte Fehler ist die übermäßige Deklaration von APIs, die tatsächlich nicht verwendet werden. Entwickler fügen „nur für den Fall“ alle möglichen Gründe hinzu, was Apple-Prüfer misstrauisch macht. Fügen Sie nur die Kategorien hinzu, die tatsächlich verwendet werden. Verwenden Sie den statischen Analyzer von Xcode zur Überprüfung.

Häufig gestellte Fragen

Was passiert, wenn das Privacy Manifest fehlt?

Ab dem 1. Mai 2024 lehnt Apple jeden Build ohne Manifest ab. Der Fehler tritt in der Upload-Phase zu App Store Connect auf. Alte Anwendungen werden nicht blockiert, aber Updates erfordern die zwingende Aufnahme des Manifests.

Benötigen iPadOS-Apps ein Privacy Manifest?

Ja, das Manifest ist für alle Apple-Plattformen verpflichtend: iOS, iPadOS, macOS, tvOS, watchOS und visionOS. Die Anforderungen an Required Reason API sind plattformübergreifend einheitlich, obwohl die API-Sätze geringfügig abweichen können.

Wie füge ich ein Manifest für ein Drittanbieter-SDK hinzu?

Wenn das SDK kein Manifest bereitgestellt hat, erstellen Sie eine separate PrivacyInfo.xcprivacy-Datei und fügen Sie sie zur SDK-Gruppe im Projekt hinzu. Geben Sie Gründe für die von diesem SDK verwendeten APIs basierend auf der Dokumentation des SDK an.

Kann Apple einen Build aufgrund eines falschen Grundes ablehnen?

Ja. Bei der automatischen Überprüfung gleicht Apple die deklarierten Gründe mit den tatsächlichen API-Aufrufen ab. Eine Diskrepanz führt zur Ablehnung. Bei manueller Überprüfung kann der Prüfer um Klärung bitten.

Wird Privacy Manifest für Swift Package Manager überprüft?

Ja, Apple überprüft Manifeste für alle Abhängigkeiten, einschließlich SPM. Paketanbieter müssen PrivacyInfo.xcprivacy in ihren Repositorys enthalten. Xcode warnt bei der Archivierung vor fehlenden Manifesten.

Zusammenfassung

  • Privacy Manifest — ab 2024 verpflichtende PrivacyInfo.xcprivacy-Datei für alle Apps und SDKs
  • Required Reason API — 6 API-Kategorien, die eine Deklaration des spezifischen Nutzungsgrundes erfordern
  • Gründe — eindeutige Codes (C617.1, 35F9.1), jede Kategorie hat 1-5 genehmigte Gründe
  • SDK — jedes Drittanbieter-SDK muss sein eigenes Manifest in der Binärdatei enthalten
  • Überprüfung — Xcode prüft das Manifest beim Archivieren, App Store Connect beim Hochladen
  • Frist — ab 1. Mai 2024 müssen alle neuen Builds das Manifest enthalten
  • Erstellen Sie PrivacyInfo.xcprivacy über die Xcode-Vorlage und deklarieren Sie nur tatsächlich verwendete APIs

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch