Info.plist Basics für React-Native Entwickler
Pascal C
Posted on January 21, 2024
Einleitung
React Native ist ein auf JavaScript basierendes Hybrid-Framework zur Entwicklung von nativen Apps auf iOS und Android. Es macht es Web-Entwicklern einfach den Umstieg zur App-Entwicklung zu finden, da die meißten mit -JavaScript* oder sogar _React* vertraut sein dürften. Schwierig wird es allerdings, wenn es um die Benutzung von Build-tools, wie bsp. Gradle oder der Verwendung der nativen Konfigurationsdateien wie der AndroidManifest.xml oder der Info.plist geht. Letztere Datei, die in jedem iOS-Projekt zu finden ist, spielt eine entscheidende Rolle bei der Definition von App-Einstellungen und Berechtigungen. In diesem Artikel wird erläutert, was die Info.plist-Datei ist und wie man sie effektiv nutzen kann.
Was ist die Info.plist-Datei?
Die Info.plist (Information Property List) ist eine Konfigurationsdatei im XML-Format, die wichtige Informationen über eine iOS-App enthält. Sie definiert Eigenschaften wie den App-Namen, Versionsnummer, Berechtigungen und vieles mehr. Xcode liest diese Datei, um wichtige Informationen eine App zu erhalten.
Warum ist Info.plist für React Native-Entwickler wichtig?
Das Bearbeiten der Info.plist-Datei ist oft notwendig, um:
- App-Berechtigungen festzulegen (z.B. Kamerazugriff, Standortdienste).
- App-Metadaten wie Version, Anzeigename und unterstützte Geräteorientierungen zu definieren.
- Externe Dienste zu integrieren, wie z.B. Push-Benachrichtigungen.
Anpassen der Info.plist
Zugriff auf die Datei
Die Info.plist-Datei befindet sich unter ios/[Projektname]/Info.plist.
Definition von App-Metadaten
Wichtige Keys für Metadaten sind bsp.:
-
CFBundleDisplayName
(Anzeigename der App): Bestimmt den Namen der App, der auf dem Homescreen des Geräts angezeigt wird. -
CFBundleShortVersionString
(Versionsnummer): Die öffentliche Versionsnummer der App, die im App Store angezeigt wird, z.B. 1.6.9. -
CFBundleVersion
(Build-Versionsnummer): Interne Versionsnummer, die zur Unterscheidung von Builds innerhalb einer Version verwendet wird. Diese Zahl ist aufsteigend, z.B. 96.
Usage Descriptions
Usage Descriptions (Nutzungsbeschreibungen) in iOS sind erforderlich, um dem Benutzer den Zweck der Anforderung bestimmter Berechtigungen zu erklären:
-
NSCameraUsageDescription
(Kamerazugriff):
<key>NSCameraUsageDescription</key>
<string>Diese App benötigt Zugriff auf Ihre Kamera, um Fotos aufzunehmen.</string>
-
NSMicrophoneUsageDescription
(Mikrofonzugriff):
<key>NSMicrophoneUsageDescription</key>
<string>Diese App benötigt Zugriff auf Ihr Mikrofon, um Sprachaufnahmen zu ermöglichen.</string>
-
NSLocationWhenInUseUsageDescription
undNSLocationAlwaysUsageDescription
(Standortdienste):
<key>NSLocationWhenInUseUsageDescription</key>
<string>Diese App benötigt Ihren Standort, um standortbezogene Dienste anzubieten.</string>
-
NSPhotoLibraryUsageDescription
(Fotobibliothekszugriff):
<key>NSPhotoLibraryUsageDescription</key>
<string>Diese App benötigt Zugriff auf Ihre Fotos, um Bilder hochzuladen.</string>
-
NSContactsUsageDescription
(Kontaktezugriff):
<key>NSContactsUsageDescription</key>
<string>Diese App benötigt Zugriff auf Ihre Kontakte, um die Integration zu erleichtern.</string>
App Transport Security (ATS)
ATS (NSAppTransportSecurity
) ist eine Sicherheitsfunktion in iOS, die standardmäßig sicherstellt, dass alle HTTP-Verbindungen, die von der App verwendet werden, HTTPS sind. Standardmässig sieht der Eintrag wie folgt aus:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Unter NSExceptionDomains
können Ausnahmen für spezifische Domains definiert werden, für die die ATS-Regeln nicht gelten sollen. Für die App-Entwicklung gibt es standardmässig einen Eintrag für localhost, damit mit der App kommuniziert werden kann.
NSExceptionAllowsInsecureHTTPLoads
mit dem Wert true
bedeutet, dass für Verbindungen zu localhost unsichere HTTP-Verbindungen erlaubt sind, anstatt HTTPS zu erzwingen. Ansonsten könnten lokal genutzte Dienste (z.B. ein Dev-server) auch nur mit https genutzt werden, was die Einrichtung eines SSL-Zertifikates erfordern würde.
Läuft eine App hinter einem VPN, kann es oft notwendig sein, den Server an dieser Stelle einzutragen und die Ausnahmen korrekt zu konfigurieren.
App-Icons, Launch-Screens und Orientierungen
-
CFBundleIcons
(App-Icons): Bestimmt die Icons, die für die App verwendet werden. In der Regel werden die Icons als Asset-Katalog in Xcode konfiguriert und nicht direkt in der Info.plist-Datei. -
UILaunchStoryboardName
oderUILaunchImages
(Launch-Screen): Definiert die Launch-Screen-Datei oder die Bilder, die beim Starten der App angezeigt werden. Auch hier ist die übliche Methode die Verwendung eines Storyboards oder eines Asset-Katalogs. -
UISupportedInterfaceOrientations
(Orientierungen):
Legt fest, welche Bildschirmorientierungen die App unterstützt.
Beispiel für Portrait und Landscape:
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
Schluß
Die Info.plist-Datei ist ein wichtiges Element in der iOS-Entwicklung. Ein tiefes Verständnis dieser Datei ermöglicht es Entwicklern, ihre Apps effektiv für iOS zu konfigurieren und anzupassen. Dies ist für eine erfolgreiche Einreichung im Apple App Store unerlässlich, denn eine Ablehnung der App kann schwerwiegende Folgen wie eine unzufriedene Userbase nach sich ziehen.
Posted on January 21, 2024
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.