Info.plist: Was es ist, erforderliche Schlüssel und Startkonfiguration

Autor: IT Sectr Veröffentlicht: 2026-05-31 Lesezeit: 8 Min.

Info.plist ist eine XML-Konfigurationsdatei für iOS- und macOS-Anwendungen, die Metadaten, Berechtigungen und Starteinstellungen enthält. Sie wird vom System vor der Initialisierung des Anwendungscodes verarbeitet. Laut Apple Developer, 2025 besteht eine App ohne korrekt konfiguriertes Info.plist die App Store-Prüfung nicht. Info.plist definiert die Bundle-ID, die Build-Version, die angeforderten Berechtigungen und die unterstützten Bildschirmausrichtungen.

Wichtigste Punkte

  • Info.plist ist ein XML-Wörterbuch mit iOS/macOS-App-Konfigurationsschlüsseln im plist-Format
  • Bundle identifier ist eine eindeutige App-Kennung im Apple-Ökosystem für Signierung und Dienste
  • Privacy-Schlüssel (NSCameraUsageDescription) sind für Zugriff auf Kamera, Mikrofon und Standort erforderlich
  • Custom URL schemes werden über den Schlüssel CFBundleURLTypes für Deep Links konfiguriert
  • UIRequiredDeviceCapabilities legt die Mindestanforderungen an das Gerät für die App Store-Installation fest

Was ist Info.plist

Info.plist ist eine Datei im XML-Format mit einem Root-Element namens dict, das Schlüssel-Wert-Paare in Form einer Property List enthält. Sie befindet sich im App-Bundle und wird vom System bei jedem Start vor der Codeausführung gelesen. Das plist-Format unterstützt Zeichenketten, Zahlen, Arrays, Wörterbücher, Datumsangaben und boolesche Werte, was die Beschreibung komplexer Konfigurationen ermöglicht.

Apple verwendet Info.plist, um die Identität, Fähigkeiten und Anforderungen der App zu definieren. Das Ändern bestimmter Schlüssel erfordert eine Neuerstellung des Bundles, da sie sich auf Metadaten auswirken, die vom App Store beim Hochladen eines Builds überprüft werden. Zum Beispiel kann das Ändern von CFBundleVersion oder CFBundleIdentifier nach der Veröffentlichung den App-Aktualisierungsprozess unterbrechen, da App Store Connect diese Werte zur Identifizierung von Versionen verwendet.

Basisschlüssel werden automatisch beim Erstellen eines Projekts in Xcode generiert, aber die meisten Einstellungen werden manuell hinzugefügt, wenn die Funktionalität der App wächst. Xcode bietet einen grafischen Info.plist-Editor mit Dropdown-Listen für Standardschlüssel, was das Risiko von Tippfehlern verringert. Für komplexe Konfigurationen wie Scene Manifest oder Background Modes wird jedoch empfohlen, das XML direkt zu bearbeiten.

Erforderliche Info.plist-Schlüssel

Einige Info.plist-Schlüssel sind für die Veröffentlichung im App Store erforderlich. Ihr Fehlen führt zur Ablehnung des Builds in der Validierungsphase. Apple überprüft diese Schlüssel automatisch beim Hochladen eines Archivs über Xcode Organizer oder Transporter. Entwickler müssen sicherstellen, dass alle erforderlichen Felder korrekt ausgefüllt sind, bevor sie zur Prüfung einreichen.

Bundle-Kennungen

Der Schlüssel CFBundleIdentifier legt eine eindeutige App-Kennung in umgekehrter Domain-Notation fest (com.company.appname). Er wird für die Codesignierung, Push-Benachrichtigungen, CloudKit, App Groups und viele andere Apple-Dienste verwendet. Eine Änderung der Kennung nach der Veröffentlichung wird vom App Store als neue App betrachtet, und bestehende Benutzer erhalten das Update nicht. Daher muss die Kennung während des gesamten App-Lebenszyklus unverändert bleiben.

xml
<key>CFBundleIdentifier</key>
<string>com.itsectr.myapp</string>

App-Version

Die Schlüssel CFBundleShortVersionString (angezeigte Version) und CFBundleVersion (Build-Nummer) werden von App Store Connect und dem System zur Update-Verwaltung verwendet. Die Version wird im Format major.minor.patch angegeben. Die Build-Nummer muss mit jedem bei App Store Connect hochgeladenen Build erhöht werden, auch wenn sich die App-Version nicht ändert. Apple verwendet CFBundleVersion, um festzustellen, ob ein Build neu ist oder einen bereits hochgeladenen Build dupliziert. Stimmt die Build-Nummer mit einem zuvor hochgeladenen Build überein, wird der Fehler ITMS-90161 zurückgegeben.

xml
<key>CFBundleShortVersionString</key>
<string>1.2.0</string>
<key>CFBundleVersion</key>
<string>42</string>

Unterstützte Bildschirmausrichtungen

Die Schlüssel UISupportedInterfaceOrientations definieren die unterstützten Bildschirmausrichtungen für das iPhone. Für das iPad wird ein separater Schlüssel UISupportedInterfaceOrientations~ipad mit dem Gerätesuffix verwendet. Jede Ausrichtung wird als Zeichenkette angegeben: UIInterfaceOrientationPortrait, UIInterfaceOrientationLandscapeLeft, UIInterfaceOrientationLandscapeRight, UIInterfaceOrientationPortraitUpsideDown. Wenn eine App nur die Hochformat-Ausrichtung unterstützt und nicht iPhone-exklusiv ist, lehnt der App Store den Build ab, wenn nur Hochformat für das iPad angegeben ist.

xml
<key>UISupportedInterfaceOrientations</key>
<array>
    <string>UIInterfaceOrientationPortrait</string>
    <string>UIInterfaceOrientationLandscapeLeft</string>
</array>

Berechtigungen und Privacy-Schlüssel

Seit iOS 10 verlangt Apple eine Beschreibung für jede angeforderte Berechtigung über Schlüssel mit dem Präfix NS (NeXTStep). Die Beschreibung wird dem Benutzer in einem Systemdialog beim ersten Zugriffsversuch auf private APIs angezeigt. Fehlt der entsprechende NS-Schlüssel beim Aufruf einer API, die eine Berechtigung erfordert, führt dies sofort zu einem App-Absturz mit einer Ausnahme, die nur in den Absturzprotokollen aufgezeichnet wird.

SchlüsselZweck
NSCameraUsageDescriptionZugriff auf Kamera für Fotos und Videos
NSPhotoLibraryUsageDescriptionZugriff auf die Fotomediathek
NSLocationWhenInUseUsageDescriptionStandortermittlung bei Nutzung
NSMicrophoneUsageDescriptionZugriff auf Mikrofon für Audioaufnahmen
NSContactsUsageDescriptionZugriff auf Gerätekontakte

Jeder Privacy-Schlüssel muss eine für den Benutzer verständliche Beschreibung des Grundes für die Anfrage enthalten. Leere oder allgemeine Texte wie „Für den App-Betrieb“ oder „Zugriff erforderlich“ führen zur Ablehnung durch den App Store. Die Beschreibung sollte die konkrete Funktionalität erklären: „Der Kamerazugriff wird zum Scannen von QR-Codes und zum Erstellen von Profilfotos benötigt.“ Es wird empfohlen, lokalisierte Versionen der Beschreibungen über InfoPlist.strings-Dateien für jede unterstützte Sprache zu verwenden.

Das Fehlen des erforderlichen NS-Schlüssels beim Aufruf einer API, die auf private Daten zugreift, führt zu einem Absturz der App. Das System beendet den Prozess mit einer Ausnahme, die nur in den Absturzbericht-Protokollen von Xcode oder Firebase Crashlytics sichtbar ist. Der Benutzer sieht nur ein plötzliches Schließen der App ohne Erklärung. Daher muss vor dem Hinzufügen neuer Funktionalität, die Kamera, Mikrofon oder Standort verwendet, zunächst der entsprechende Privacy-Schlüssel in Info.plist hinzugefügt werden, bevor der API-Aufruf implementiert wird.

Custom URL Schemes und App Links

Der Schlüssel CFBundleURLTypes registriert benutzerdefinierte URL-Schemata für Deep Links in der App. Dies ermöglicht das Öffnen der App aus dem Browser, einer E-Mail oder anderen Apps über Links wie myapp://profile/123. Jedes Schema identifiziert die App eindeutig: Wenn zwei Apps dasselbe Schema registrieren, zeigt das System dem Benutzer einen Dialog zur Auswahl, welche verwendet werden soll.

xml
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>com.itsectr.myapp</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myapp</string>
        </array>
    </dict>
</array>

Zur Unterstützung von Universal Links ist der Schlüssel com.apple.developer.associated-domains in der Entitlements-Datei erforderlich, nicht in Info.plist. Universal Links funktionieren nur, wenn eine konfigurierte apple-app-site-association-Datei auf dem Server existiert, die die Domain mit der App verknüpft. Im Gegensatz zu benutzerdefinierten URL-Schemata zeigen Universal Links keinen Bestätigungsdialog und kollidieren nicht mit anderen Apps, da sie HTTPS-Links anstelle benutzerdefinierter Schemata verwenden. Sie erfordern jedoch eine Domain mit einem gültigen SSL-Zertifikat.

Benutzerdefinierte Schemata können mit den standardmäßigen iOS-Schemata kollidieren. Es wird empfohlen, Schemata mit mindestens 4 Zeichen zu verwenden, um Kollisionen mit anderen Apps zu minimieren. Das Schema „fb“ ist beispielsweise zu kurz und kann zu Konflikten führen. Besser ist die umgekehrte Notation: myapp:// statt app://. Beachten Sie auch, dass der Benutzer ein unerwartetes Verhalten erleben kann, wenn die App gelöscht wurde, aber eine andere App dasselbe Schema registriert hat.

Startkonfiguration und Hintergrundmodi

Der Schlüssel UIBackgroundModes deklariert die Hintergrundfähigkeiten der App. Jeder Modus erfordert eine entsprechende Beschreibung in Info.plist und eine Bestätigung in den Xcode-Projektfunktionen. Ohne Angabe eines Modus kann das System die Hintergrundaufgabe nach 30 Sekunden oder bei Ressourcenknappheit zwangsweise beenden.

xml
<key>UIBackgroundModes</key>
<array>
    <string>fetch</string>
    <string>remote-notification</string>
    <string>location</string>
    <string>processing</string>
</array>

Der Schlüssel UIApplicationSupportsMultipleScenes aktiviert die Multitasking-Unterstützung auf iPad und Mac Catalyst. Ohne diesen Schlüssel kann die App SwiftUI ScenePhase oder UIKit UISceneDelegate nicht zur Verwaltung mehrerer Fenster verwenden. Auf iPadOS können Benutzer mehrere Fenster derselben App öffnen, Inhalte zwischen ihnen ziehen und Split View verwenden. Wenn die App den Multi-Fenster-Modus nicht unterstützt, deaktiviert das Setzen dieses Schlüssels auf false die entsprechende Funktionalität.

Der Schlüssel LSRequiresIPhoneOS verhindert die Installation der App auf dem iPad. Er wird für iPhone-exklusive Apps verwendet, die die iPad-Oberfläche nicht unterstützen oder nicht an einen großen Bildschirm angepasst wurden. Apple empfiehlt jedoch nicht, diesen Schlüssel unnötig zu verwenden, da Benutzer erwarten, dass Apps auf allen Geräten mit iOS und iPadOS funktionieren. Wenn die App dennoch auf iPhone beschränkt ist, stellen Sie sicher, dass diese Anforderung technisch begründet und in der App Store-Beschreibung angegeben ist.

Der Schlüssel UIViewControllerBasedStatusBarAppearance steuert den Stil der Statusleiste. Bei NO wird der Stil der Statusleiste global über den Info.plist-Schlüssel UIStatusBarStyle festgelegt. Bei YES (Standard seit iOS 7) kann jeder ViewController seine eigene Statusleiste durch Überschreiben von preferredStatusBarStyle verwalten. Für moderne Apps wird empfohlen, YES zu belassen, um auf verschiedenen Bildschirmen unterschiedliche Statusleistenstile zu haben, z. B. hell auf dunklem Hintergrund und dunkel auf hellem Hintergrund.

Der Schlüssel UIApplicationExitsOnSuspend zwingt die App, beim Wechsel in den Hintergrund vollständig zu beenden, anstatt zu pausieren. Er wird selten verwendet, nur für Apps mit hohen Sicherheitsanforderungen: Banking-Apps oder Apps, die mit vertraulichen Daten umgehen. In diesem Fall verlieren Benutzer die Möglichkeit, schnell zur App zurückzukehren, und jeder Start erfolgt aus einem sauberen Zustand. Der App Store kann während der Prüfung eine Begründung für die Verwendung dieses Schlüssels anfordern.

Der Schlüssel NSAppTransportSecurity verwaltet die Netzwerkverbindungen der App. Seit iOS 9 blockiert App Transport Security (ATS) standardmäßig alle HTTP-Verbindungen und verlangt HTTPS. Zur vorübergehenden Zulassung von HTTP-Anfragen an bestimmte Domains wird das Wörterbuch NSExceptionDomains innerhalb von NSAppTransportSecurity verwendet. Für die Entwicklung ist die vollständige Deaktivierung von ATS über NSAllowsArbitraryLoads = true erlaubt, aber Apple verlangt eine Begründung und lässt solche Builds ohne triftigen Grund nicht zu. In Produktions-Builds muss ATS für alle Domains aktiviert sein, die mit Benutzerdaten umgehen.

Häufig gestellte Fragen

Wo finde ich Info.plist in einem Xcode-Projekt?

Die Datei Info.plist befindet sich im Projektordner mit dem Namen, der dem App-Namen entspricht. In Xcode wird sie im Projektnavigator innerhalb der Gruppe Supporting Files mit einem blauen Buchsymbol angezeigt. Sie kann auch über die Spotlight-Suche im Projekt gefunden werden.

Kann Info.plist manuell bearbeitet werden?

Ja, Info.plist kann in jedem Texteditor oder über die grafische Oberfläche von Xcode bearbeitet werden. Die manuelle Bearbeitung gibt volle Kontrolle über den Inhalt, erfordert jedoch Aufmerksamkeit für die XML-Syntax: Jede öffnende <key>-Direktive muss ein entsprechendes </key> haben, und die Datentypen müssen den Erwartungen von Apple entsprechen.

Was ist Info.plist in SwiftUI-Projekten?

In SwiftUI-Projekten funktioniert Info.plist genauso wie in UIKit-Projekten. Zusätzlich kann der Schlüssel UIApplicationSceneManifest für die Szenenkonfiguration erforderlich sein, wenn das Projekt nicht das App-Protokoll zur Szenenverwaltung verwendet. Das SwiftUI-App-Protokoll generiert automatisch die Szenenkonfiguration, aber für die Anpassung ist das manuelle Hinzufügen von Schlüsseln erforderlich.

Wie füge ich einen benutzerdefinierten Schlüssel in Info.plist hinzu?

Öffnen Sie Info.plist in Xcode, klicken Sie auf die Plus-Schaltfläche und geben Sie den Schlüsselnamen ein. Verwenden Sie für benutzerdefinierte Schlüssel ein Firmenpräfix, um Konflikte mit Apple-Systemschlüsseln zu vermeiden, z. B. ITSCustomKey statt nur CustomKey. Der Werttyp (String, Number, Array, Dictionary) wird basierend auf dem erwarteten Datenformat ausgewählt.

Warum hat der App Store meinen Build wegen Info.plist abgelehnt?

Typische Gründe: Fehlende Privacy-Schlüssel für angeforderte Berechtigungen, falsche CFBundleIdentifier, Versionskonflikt zwischen Info.plist und App Store Connect, leere Werte bei NS-Schlüsseln. Überprüfen Sie alle NS-Schlüssel für die verwendeten APIs und stellen Sie sicher, dass jede Beschreibung eine aussagekräftige Erklärung in der Lokalisierungssprache der App enthält.

Zusammenfassung

  • Info.plist ist eine XML-Konfiguration für iOS/macOS-Apps mit Metadaten, Berechtigungen und Starteinstellungen
  • CFBundleIdentifier und CFBundleVersion sind erforderliche Schlüssel zur Identifizierung und App Store-Veröffentlichung
  • Privacy-Schlüssel (NSCameraUsageDescription) sind für Zugriff auf Kamera, Mikrofon und andere private APIs erforderlich
  • Custom URL schemes werden über CFBundleURLTypes konfiguriert, Universal Links über Entitlements und apple-app-site-association
  • UIBackgroundModes deklariert Hintergrundfähigkeiten für den korrekten Betrieb im Hintergrund
  • Fehlende erforderliche Schlüssel führen zu App-Abstürzen oder App Store-Build-Ablehnung
  • Die Bearbeitung von Info.plist ist über die Xcode-Oberfläche oder einen Texteditor mit XML-Syntaxkontrolle verfügbar

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