So erstellen wir eine iOS App, die mit einem Knopfdruck öffnet die App Einstellungen des Geräts. Ich habe gesehen, dass sich die Methode mit iOS 10 und Swift 3 leicht geändert hat, also verwende ich eine Bedingung, um zu prüfen, auf welcher iOS-Version sich der Benutzer befindet, bevor er den Code ausführt.iOS 10 Öffnen Einstellungen Crash
if let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) {
if #available(iOS 10.0, *) {
// iOS 10.0.
UIApplication.shared.open(settingsUrl, options: [:], completionHandler: nil)
} else {
// Fallback on earlier versions.
UIApplication.shared.openURL(settingsUrl)
}
}
Das funktioniert völlig in Ordnung, auf einem iOS-Gerät 9, aber nicht auf einem iOS-10 ein. Das Problem ist, dass, während die App den Benutzer an die Einstellungen App in iOS 10 sendet, es sofort ohne Absturzprotokolle abstürzt. Wenn ich dieselbe Methode verwende, um eine Website wie Google zu öffnen, funktioniert das auf iOS 9 und 10 einwandfrei. Ich habe viel geforscht und es scheint, dass sie einige Dinge mit den URL-Schemas geändert haben, aber keine finden Fixes/Problemumgehungen.
ich die app unabhängig getestet auf dem Gerät, wenn es nicht durch Xcode läuft, wenn das was du meinst? Ich bekomme immer noch das gleiche Verhalten. – BenSDConway
Es ist für eine benutzerdefinierte Tastaturerweiterung, also zeigen wir in der Container-App einfach eine Schaltfläche, die beim Anklicken direkt zur Einstellungs-App gesendet wird, anstatt selbst dort navigieren zu müssen. Es stürzt ab, bevor der Benutzer in der Einstellungs-App etwas tun kann. Es ist hauptsächlich eine UX-Sache, aber ziemlich vital, glauben wir. – BenSDConway
Wenn Ihre App weiterhin iOS 9 unterstützt, verwenden Sie die ältere 'openURL'-Methode unabhängig von der iOS-Version. Das ist vollkommen gültig und sicher. – rmaddy