2017-08-07 2 views
3

Dieser Code funktioniert gut für iOS 10.0 bis 10.3.3 aber wenn ich diesen Code für iOS 11 (Beta) ausführen, geht die Anwendung in den Hintergrund, aber Einstellungsseite wird nicht geöffnet.Wie öffne ich Location Services von der iOS-Anwendung für iOS 11 beta?

+0

"Anwendung geht in den Hintergrund" Sie meinen, App stürzt ab? –

+0

Überprüfen Sie meine Antwort –

+0

App stürzt nicht ab und ich habe Ihre Antwort überprüft.Bitte finden Sie den Kommentar –

Antwort

0

Sie sollten überprüfen, ob iOS die URL, die Sie anrufen möchten, öffnen kann. Sie können dies mit if([UIApplication sharedApplication] canOpenURL:URL]]){...} tun. Wenn iOS 11 das nicht kann, fügen Sie eine else-Anweisung hinzu, um nach iOS 11 zu suchen und eine neue Lösung zu entwickeln.

+0

Das bedeutet, dass Ihre URL in iOS 11 nicht funktioniert, so müssen Sie einen anderen Weg finden. In einer anderen SO-Frage habe ich festgestellt, dass Sie die App Einstellungen mit '[[UIApplication sharedApplication] openURL öffnen können: [NSURL URLWithString: UIApplicationOpenSettingsURLString]];'. [link] (https://stackoverflow.com/questions/5655674/opening-the-settings-app-from-another-app) – jbehrens94

+0

NSURL * URL = [NSURL URLWithString: @ "App-Einstellungen: root = Datenschutz & Pfad = LOCATION "]; if ([[UIApplication sharedApplication] canOpenURL: URL]) {NSLog (@ "kann geöffnet werden"); } else {NSLog (@ "kann nicht geöffnet werden"); } Zurückgeben "kann öffnen". Die App navigiert nicht zur Einstellung. –

+0

Sie lesen nicht, was ich sage: Sie müssen '[NSURL URLWithString: @" App-Prefs: root = Datenschutz & Pfad = LOCATION "] mit einer anderen Lösung ersetzen, weil es offensichtlich nicht mehr funktioniert. Was das richtige NSURL ist, weiß ich nicht, du musst es rückentwickeln. – jbehrens94

1

hinzufügen URL-Schema in Info.plist, durch

Ausbau-> Targets-> Info-> URL Typen-> hinzufügen

Geben Sie Prefs unter URL Schemes zu gehen.

enter image description here

dann mit dem Code:

 NSURL *URL = [NSURL URLWithString:@"App-Prefs:root=Privacy&path=LOCATION"]; 
     [[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil]; 

Es ist für mich 9 Beta Xcode arbeitete 4 (iOS 11 beta).
Hoffe es hilft!

+0

Ich habe bereits "Prefs unter URL Schemes" hinzugefügt. es funktioniert gut für unter 1OS 10.3.3. Code, den Sie vorschlagen, ist NSURL * URL = [NSURL URLWithString: @ "App-Einstellungen: root = Datenschutz & Pfad = LOCATION"]; [[UIApplication sharedApplication] openURL: URL-Optionen: @ {} completionHandler: nil]; Ich habe gerade überprüft, über die Lösung, die mir das gleiche Problem. Die Anwendung wechselt in den Hintergrund und der Startbildschirm des iPhone erscheint. –

+0

Dies funktionierte für mich auf dem letzten iOS 11. – Todd

1

Anwendung geht in den Hintergrund, aber Einstellungsseite wird nicht geöffnet.

Es war Absturz von Settings.app. Ab iOS 11 Beta 7 wurde der Absturz behoben. Aber es kann immer noch nicht den spezifischen Pfad mit Schema wie @ "App-Prefs: root = Datenschutz & Pfad = LOCATION" öffnen.

Ich habe versucht, in den de-kompilierten Code von Settings.app zu graben (was eigentlich Preferences.app ist). Scheint so, als ob es immer noch die obigen Schemata benutzt, die wir zu verwenden versuchten, da ich die Schemazeichenfolgen in der gleichen Form in den entkompilierten Codes gefunden habe.

Und es könnte eine Art von Berechtigungssteuerung in SpringBoard hinzugefügt werden, um Manager, welcher Prozess bestimmten Pfad in den Einstellungen ordnungsgemäß öffnen kann.

Wie auch immer, jetzt in iOS 11 I nur

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

Einstellungen öffnen können.

+0

Ich hoffe, es wird in iOS 11 stabil gelöst werden. –

+0

@ShrikantPhadke Es könnte nicht. Laut dem Launchers-Entwickler [blog] (https://cromulentlabs.wordpress.com/2017/08/22/on-upcoming-changes-ini-ios-11/) hat Apple diese "private" Funktion absichtlich für Dritte deaktiviert Entwickler. – phoenixxyang

0

Alle Hinweise deuten auf einen iOS Bug oder eine Änderung hin, über die die Entwickler nicht informiert wurden. Es ist Beta 10 und das funktioniert immer noch nicht. Beste Ratschläge, senden Sie einen Fehlerbericht an Apple.

Verwandte Themen