Verwenden von UIApplication.openSettingsURLString
Update für Swift 5.1
override func viewDidAppear(_ animated: Bool) {
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplication.openSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
Swift 4.2
override func viewDidAppear(_ animated: Bool) {
let alertController = UIAlertController (title: "Title", message: "Go to Settings?", preferredStyle: .alert)
let settingsAction = UIAlertAction(title: "Settings", style: .default) { (_) -> Void in
guard let settingsUrl = URL(string: UIApplicationOpenSettingsURLString) else {
return
}
if UIApplication.shared.canOpenURL(settingsUrl) {
UIApplication.shared.open(settingsUrl, completionHandler: { (success) in
print("Settings opened: \(success)") // Prints true
})
}
}
alertController.addAction(settingsAction)
let cancelAction = UIAlertAction(title: "Cancel", style: .default, handler: nil)
alertController.addAction(cancelAction)
present(alertController, animated: true, completion: nil)
}
viewDidAppear
Methode hinzuzufügen , mit der SchaltflächeSettings
undCancel
UIApplication.sharedApplication().openURL(yourCustomURL)
von der aktuellen App aus aufrufen , aber Sie haben diesen Zugriff nicht über die Einstellungen-AppUrsprüngliche Antwort unten
Swift 5
Swift 4
HINWEIS: Die folgende Methode funktioniert für alle Versionen unter iOS 11, für höhere Versionen wird die App möglicherweise abgelehnt, da es sich um eine private API handelt
Manchmal möchten wir einen Benutzer zu anderen Einstellungen als unseren App-Einstellungen führen. Die folgende Methode hilft Ihnen dabei:
Konfigurieren Sie zunächst die URL-Schemata in Ihrem Projekt. Sie finden es unter Ziel -> Info -> URL-Schema. Klicken Sie auf die Schaltfläche + und geben Sie die Einstellungen in URL-Schemata ein
Swift 5
Swift 3
Schnell
Ziel c
und im Folgenden sind alle verfügbaren URLs aufgeführt
** Auf IOS <12 **
Auf IOS 13
App-Einstellungen: DO_NOT_DISTURB
Nicht getestet
App-Einstellungen: TWITTER (??)
Hinweis: Die Netzwerkeinstellungen werden in einem Simulator nicht geöffnet, die Verbindung funktioniert jedoch auf einem realen Gerät.
quelle
App-Prefs
anstelle vonprefs
als Schema der URL-Zeichenfolge. zBApp-Prefs:root=WIFI
App-Prefs
oderprefs:root
da es sich um private APIs handelt. Wenn Sie kein großes Glück haben, wird Ihre App abgelehnt.In iOS 8+ können Sie Folgendes tun:
Swift 4
quelle
UIApplication.shared.openURL(URL(string: UIApplicationOpenSettingsURLString)!)
URL(string: UIApplication.openSettingsURLString).map { UIApplication.shared.open($0, options: [:], completionHandler: nil) }
Mit dem Hinweis von @ vivek entwickle ich eine Utils-Klasse, die auf Swift 3 basiert. Ich hoffe, Sie wissen das zu schätzen!
Dies ist sehr hilfreich, da sich die APIs mit Sicherheit ändern und Sie sie einmal und sehr schnell umgestalten können!
quelle
Die erste Antwort von App-spezifischen URL-Schemata funktionierte für mich unter iOS 10.3.
quelle
App-Prefs:root=Privacy&path=LOCATION
arbeitete für mich, um zu den allgemeinen Standorteinstellungen zu gelangen. Hinweis: Funktioniert nur auf einem Gerät.quelle
in ios10 / Xcode 8 im Simulator:
funktioniert
nicht.
quelle
NS
Präfix in iOS 10 entfernt?Ich habe diese Codezeile gesehen
funktioniert nicht, es hat bei ios10 / Xcode 8 nicht funktioniert, nur ein kleiner Codeunterschied, bitte ersetzen Sie diesen durch
Swift3
Ersetzen mit
Ich hoffe es hilft. Prost.
quelle
Wort der Warnung: Die
prefs:root
oderApp-Prefs:root
URL-Schemata werden als private API betrachtet. Apple kann Ihre App ablehnen, wenn Sie diese verwenden. Folgendes erhalten Sie möglicherweise, wenn Sie Ihre App einreichen:quelle
Swift 4.2, iOS 12
Die
open(url:options:completionHandler:)
Methode wurde aktualisiert und enthält ein Nicht-Null-Optionswörterbuch, das ab diesem Beitrag nur eine mögliche Typoption enthältUIApplication.OpenExternalURLOptionsKey
(im Beispiel).Durch das explizite Erstellen einer URL, beispielsweise mit "App-Prefs", hat AFAIK einige Apps aus dem Store abgelehnt.
quelle
Hinzufügen zu @Luca Davanzo
In iOS 11 wurden einige Berechtigungseinstellungen in den App-Pfad verschoben:
quelle
SWIFT 4
Dies kann die spezifischen Einstellungen Ihrer App erfordern, wenn Sie danach suchen.
quelle
Wie oben @niravdesai sagte App-Prefs. Ich fand, dass dies
App-Prefs:
sowohl für iOS 9, 10 als auch für 11 getestete Geräte funktioniert. wo wieprefs:
nur unter iOS 9 funktioniert.quelle