it-swarm.com.de

iOS-Starteinstellungen -> URL-Schema für Einschränkungen

Ich habe kürzlich das tolle iOS5 benutzerdefiniertes Einstellungs-URL-Schema entdeckt, das auf dieser großartigen Website ausführlich erklärt werden kann.

Ich habe festgestellt, dass dies funktioniert, und der Benutzer wird von meiner Anwendung zu der App Einstellungen geleitet:

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

Kann aber nicht direkt über den Parameter path zum Pfad Restrictions geroutet werden:

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

Hat jemand eine Dokumentation dazu gefunden oder konnte dies funktionieren? 

Jeder Einblick wäre sehr dankbar. Ich versuche, den Benutzer zum In-App-Kauf zu bringen und möchte den Benutzer nicht manuell auf Einschränkungen klicken (nicht sehr offensichtlich).

85
kturner

AS @Nix Wang ANTWORT DES ANTWORTES IS NICHT IN IOS 10


WARNUNG: Diese Methode funktioniert nicht für Geräte mit iOS 5.1 und höher - Siehe den Kommentar von Hlung unten.

Es ist möglich, dass die path-Komponente einen anderen Namen als der eigentliche Abschnitt hat. Es ist jedoch auch möglich, dass Sie nicht direkt über eine URL auf diesen Abschnitt zugreifen können. Ich habe eine Liste möglicher URLs gefunden und Einschränkungen sind nicht auf der Liste, vielleicht ist es nur noch nicht herausgefunden worden.

Liste der derzeit bekannten URLs in der Einstellungen-App:

  • prefs: root = Allgemeines & path = About
  • prefs: root = General & path = ACCESSIBILITY 
  • prefs: root = AIRPLANE_MODE
  • prefs: root = Allgemeines & Pfad = AUTOLOCK 
  • prefs: root = General & path = USAGE/CELLULAR_USAGE 
  • prefs: root = Helligkeit 
  • prefs: root = Allgemein & Pfad = Bluetooth 
  • prefs: root = General & path = DATE_AND_TIME
  • prefs: root = FACETIME 
  • prefs: root = Allgemein
  • prefs: root = Allgemeines & Pfad = Tastatur 
  • prefs: root = CASTLE
  • prefs: root = CASTLE & path = STORAGE_AND_BACKUP 
  • prefs: root = Allgemeines & Pfad = INTERNATIONAL 
  • prefs: root = LOCATION_SERVICES 
  • prefs: root = ACCOUNT_SETTINGS
  • prefs: root = MUSIC 
  • prefs: root = MUSIC & path = EQ
  • prefs: root = MUSIC & path = VolumeLimit 
  • prefs: root = Allgemeines & path = Netzwerk 
  • prefs: root = NIKE_PLUS_iPod 
  • prefs: root = NOTES 
  • prefs: root = NOTIFICATIONS_ID
  • prefs: root = Telefon
  • prefs: root = Fotos 
  • prefs: root = General & path = ManagedConfigurationList 
  • prefs: root = Allgemeines & Pfad = Zurücksetzen 
  • prefs: root = Sounds & path = Klingelton 
  • prefs: root = Safari
  • prefs: root = Allgemeines & Pfad = Assistent 
  • prefs: root = Sounds
  • prefs: root = General & path = SOFTWARE_UPDATE_LINK 
  • prefs: root = STORE 
  • prefs: root = Twitter
  • prefs: root = General & path = USAGE
  • prefs: root = VIDEO 
  • prefs: root = Allgemein & Pfad = Netzwerk/VPN
  • prefs: root = Wallpaper 
  • prefs: root = WIFI
  • prefs: root = INTERNET_TETHERING
140
Henri Normak

Ab iOS8 können Sie die integrierte Einstellungen-App öffnen mit:

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

Die eigentliche URL-Zeichenfolge lautet @"app-settings:". Ich habe versucht, verschiedene Abschnitte an die Zeichenfolge anzuhängen ("Bluetooth", "ALLGEMEIN" usw.), aber es scheint nur die Verknüpfung mit dem Haupt-Einstellungsbildschirm zu funktionieren. Senden Sie eine Antwort, wenn Sie etwas anderes erfahren.

47
Jason Moore

Wenn Sie das Prefs-URL-Schema zu Ihrer iOS-App hinzufügen, können Sie alle unter iOS 5 verfügbaren Schemata verwenden. Ich habe es unter iOS 9 getestet, aber ich denke, es funktioniert auch mit älteren Versionen. 

42
Pedro Tôrres

Aktualisieren:

prefs: funktioniert NICHT seit iOS 10.

32
Nix Wang

Ja, ich habe dies (und viele mehr) gesehen und sogar in einer Testanwendung implementiert. Ich brauche wirklich das endgültige Wort von Apple, aber die Meinung der Community zu Konsens hat Apple in 5.1 abgelehnt, nachdem es öffentlich "entdeckt/veröffentlicht" wurde, sodass Anwendungen, die es enthalten, nicht akzeptiert werden.

08/01/12 Update: Ich habe Apple über meinen Entwicklerkonto gefragt, ob es eine Möglichkeit gibt, den WiFi-Einstellungen-Dialog programmgesteuert zu starten. Hier ist die Antwort:

"Unsere Ingenieure haben Ihre Anfrage geprüft und sind zu dem Schluss gekommen, dass es keine unterstützte Methode gibt, um die gewünschte Funktionalität zu erreichen. Die derzeit ausgelieferten Systemkonfigurationen."

21
Dan

In iOS 9 funktioniert es wieder!

Zum Öffnen von Einstellungen> Allgemein> Tastatur verwende ich:

prefs:root=General&path=Keyboard

Darüber hinaus ist es möglich, zu Keyboards weiterzugehen :

prefs:root=General&path=Keyboard/KEYBOARDS
18
Mikhail Gasanov

Ich wollte das Bluetooth-Menü in der Anwendung "Einstellungen" öffnen und der obige Pfad (prefs: root = General & path = Bluetooth) hat für mich nicht funktioniert. Was für mich endete, war 

UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)

Stellen Sie sicher, dass Sie zuerst das URL-Schema prefs definiert haben.

7
Mahesh

Lösung für iOS10. Funktioniert gut.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=Twitter"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];

Ab iOS10 können Sie verwenden 

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!) 

um allgemeine Einstellungen zu öffnen.

sie können auch bekannte URLs hinzufügen (Sie können sie in der am meisten bewerteten Antwort sehen), um bestimmte Einstellungen zu öffnen. Zum Beispiel öffnet die unten die touchID und den Passcode.

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
4
mkeremkeskin

iOS 10

Verwenden Sie app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

Siehe Gist

2
Alex Hedley

Funktioniert gut für App-Benachrichtigungseinstellungen auf IOS 10 (getestet)

if(&UIApplicationOpenSettingsURLString != nil){
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
2
Mrsantateam

Hier habe ich noch etwas gefunden:

  1. Nachdem ich das URL-Schema "prefs" definiert habe, ist "prefs: root = Safari & path = ContentBlockers" auf Simulator (iOS 9.1 English), aber nicht auf Simulator (Vereinfachtes Chinesisch). Springen Sie einfach zu Safari, aber nicht zu Inhaltsblockern. Wenn Ihre App international ist, seien Sie vorsichtig.
    Update: Ich weiß nicht warum, jetzt kann ich nicht mehr in ContentBlocker springen, derselbe Code, die gleiche Version funktioniert jetzt nicht. :(

  2. Bei echten Abweichungen (mein iPhone ist iPhone 6S und iPad mini 2), sollte "Safari" "SAFARI" sein, "Safari" funktioniert nicht auf echten Geräten, "SAFARI" funktioniert jetzt am Simulator:

    #if Arch(i386) || Arch(x86_64)
        // Simulator
        let url = NSURL(string: "prefs:root=Safari")!
    #else
        // Device
        let url = NSURL(string: "prefs:root=SAFARI")!
    #endif
    
    if UIApplication.sharedApplication().canOpenURL(url) {
        UIApplication.sharedApplication().openURL(url)
    }
    
  3. Bisher konnten keine Unterschiede zwischen iPhone und iPad festgestellt werden.

2
Kaiyuan Xu

Ich aktualisiere hier eine Nachricht. Die Verwendung von 'prefs:' wird nur NICHT von Apple abgelehnt. Ich habe es getestet und im App Store (im August 2016) geprüft. Vielen Dank.

0