it-swarm.com.de

Öffnen Sie die Einstellungen-App von einer anderen App

Okay, ich weiß, dass es viele Fragen dazu gibt, aber sie stammen alle aus vor langer Zeit.

So. Ich weiß, dass dies möglich ist, weil die Map-App dies tut.

Wenn ich in der Karten-App die Lokalisierung für diese App ausschalte, wird mir eine Nachricht gesendet, und wenn ich auf "OK" drücke, wird die "Einstellungen-App" geöffnet. Und meine Frage ist, wie dies möglich ist. .Wie kann ich die "Einstellungs-App" von meiner eigenen App aus öffnen?

Grundsätzlich muss ich das Gleiche tun, wenn der Benutzer den Standort für meine App deaktiviert, und ich ihm eine Nachricht mit einer Nachricht zeige, die die "Einstellungs-App" öffnet.

144
FelipeDev.-

Wie von Karan Dua erwähnt das ist jetzt in iOS8 möglich mit UIApplicationOpenSettingsURLString siehe Apples Dokumentation .

Beispiel:

Swift 4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

In Swift 3:

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)

In Swift 2:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

In Objective-C

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

Vor iOS 8:

Du kannst nicht. Wie Sie bereits sagten, wurde dies bereits mehrfach beschrieben, und das Popup-Fenster, in dem Sie aufgefordert werden, Standortdienste zu aktivieren, wird von Apple bereitgestellt und nicht von der App selbst. Deshalb ist es in der Lage, die Anwendung Einstellungen zu öffnen.

Hier sind ein paar verwandte Fragen und Artikel:

ist es möglich, Settings App mit openURL zu öffnen?

Programmgesteuertes Öffnen der Einstellungs-App (iPhone)

Wie kann ich die Einstellungs-App öffnen, wenn der Benutzer eine Taste drückt?

iPhone: Öffnen der Anwendungseinstellungen in der App

Öffnen Sie UIPickerView, indem Sie auf einen Eintrag in den Einstellungen der App klicken.

Öffne die Einstellungen-App?

iOS: Sie haben falsche Einstellungen vorgenommen

236
Joe

Aus @Yatheeshaless 's Antwort :

Sie können die Einstellungen-App programmgesteuert in iOS8 öffnen, jedoch nicht in früheren Versionen von iOS.

Swift:

   UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

Swift 4:

if let url = NSURL(string: UIApplicationOpenSettingsURLString) as URL? {
    UIApplication.shared.openURL(url)
}

Swift 4.2 (BETA):

if let url = NSURL(string: UIApplication.openSettingsURLString) as URL? {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

Ziel c:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
125
Karan Dua

JA!! Sie können den Bildschirm Geräteeinstellungen starten. Ich habe unter iOS 9.2 getestet.

Schritt 1. Wir müssen URL-Schemas hinzufügen

Gehen Sie zu Projekteinstellungen -> Info -> URL-Typen -> Neue URL-Schemata hinzufügen

 enter image description here

Schritt 2. Programmgesteuerte Einstellungen dank @davidcann

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

Wir können auch Unterbildschirme wie Musik, Ort usw. starten, indem Sie nur den richtigen Namen verwenden

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=MUSIC"]];

Sehen Sie diese vollständige Namensliste hier geteilt durch Henri Normak


Update:

Laut dem Kommentar möchte jeder wissen, was nach dieser Änderung meines Antragsstatus geschieht?

Also YES!! I got successful update submission and application is available on store without any complain.

Nur um zu bestätigen, Ich habe gerade heute morgen heruntergeladen und die Ortungsdienste deaktiviert und dann die App gestartet, die mich nach der Standorterlaubnis gefragt hat, und dann wurde mein Benachrichtigungs-Popup dort angezeigt, um mich über Einstellungen -> Seite für Standortdienste -> Aktiviert zu senden -> Das ist es !!

56
swiftBoy

Sie können dies unter iOS 5.0 und höher verwenden: Das funktioniert nicht mehr.

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];
18
davidcann

iOS 10 Update

Apple hat die Methode geändert, um Async im Hauptthread zu öffnen. Ab sofort ist es jedoch nur noch möglich, die App-Einstellungen in nativen Einstellungen zu öffnen.

[[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];

iOS 9 Update

Es ist jetzt möglich, direkt zum Menü der Untereinstellungen zu gelangen. Es muss jedoch ein URL-Schema erstellt werden. Dies kann auf zwei Arten geschehen:

  1. XCode - Sie finden ihn unter Ziel, Info, URL-Schema. Geben Sie dann einfach prefs ein.
  2. Direkt zur * -Info.plist hinzufügen. Fügen Sie Folgendes hinzu: <key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleTypeRole</key> <string>Editor</string> <key>CFBundleURLSchemes</key> <array> <string>prefs</string> </array> </dict> </array>

Dann der Code:

Swift

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=General&path=Keyboard")!)

Ziel c

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Keyboard"]];

13
guyromb

In Swift 3/iOS 10+ sieht das jetzt so aus

if let url = URL(string: "App-Prefs:root=LOCATION_SERVICES") {
    UIApplication.shared.open(url, completionHandler: .none)
}
4
Damo

Swift 3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}
4
Duy Doan

In Swift 3 brauche ich nur Folgendes (hier zum Beispiel zu meinen App-Benachrichtigungen umleiten): 

if let url = URL(string: "App-Prefs:root=NOTIFICATIONS_ID&path=your app bundleID") {
    if #available(iOS 10.0, *) {
        UIApplication.shared.open(url, completionHandler: .none)
    } else {
        // Fallback on earlier versions
    }
}

Quelle: phynet Gist .

Das funktionierte bei mir nur, wenn Einstellungen im Hintergrund sind. Sie werden zu den App-Benachrichtigungseinstellungen weitergeleitet. Wenn die Einstellungen jedoch nicht im Hintergrund ausgeführt wurden, werden Sie nur zu den Benachrichtigungseinstellungen im Allgemeinen weitergeleitet. 

3
ynamao

UIApplicationOpenSettingsURLString Dies funktioniert nur, wenn Sie zuvor eine Erlaubnis erteilt haben. Zum Beispiel Standort, Foto, Kontakt, Push-Benachrichtigungszugriff. Wenn Sie also keine solche Berechtigung (en) vom Benutzer haben:

Wenn iOS 10 oder höher,

Die Einstellungen werden geöffnet, stürzen dann jedoch ab. Der Grund dafür ist nichts in den Einstellungen für Ihre App.

Der folgende Code öffnet Ihre Anwendungseinstellungen in der iOS-Einstellung.

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

Aufgrund der Nichtverfügbarkeit des Geräts konnte ich dies nicht für iOS <10 überprüfen.

Ich konnte auch unten Code von einigen Gist finden und es funktioniert gut auf iOS 10. Ich bin mir jedoch nicht sicher, ob dies vom Apple Review Team genehmigt wird oder nicht.

https://Gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f

2
Hemang

Swift 4.0

'openURL' wurde in iOS 10.0 nicht mehr unterstützt: Bitte verwenden Sie openURL: Optionen: CompletionHandler: Stattdessen

UIApplication.shared.open(URL.init(string: UIApplicationOpenSettingsURLString)! , options: [:], completionHandler: nil)
1
Harshil Kotecha

Sie können den folgenden Code dafür verwenden.

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
1
Som

Swift 4

Ich ziehe es vor, die Einstellung sicherer zu öffnen

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

    UIApplication.shared.open(settingUrl)
}
else {
    print("Setting URL invalid")
}
1

Swift Mit der folgenden Funktion können Sie die Settings App mit der Bluetooth-Seite öffnen

func openSettingsApp(){
    if let settings = NSURL(string: "prefs:root=Bluetooth") {
        UIApplication.sharedApplication().openURL(settings)
    }
}

Wieder werden dadurch die App-Einstellungen nicht geöffnet. Dies würde die Einstellungen-App mit Bluetooth öffnen, da dies eine tiefe Verbindung zu Bluetooth darstellt.

0
Alix

Getestet mit iOS 10. Arbeiten

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

Glückliche Kodierung :)

0
Praveen Sharma