Öffnen der Einstellungen-App von einer anderen App aus


180

Okay, ich weiß, dass es viele Fragen gibt, aber sie sind alle von vor langer Zeit.

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

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

Grundsätzlich muss ich dasselbe tun. Wenn der Benutzer den Speicherort für meine App deaktiviert, zeige ich ihm eine Nachricht mit der Aufschrift "App einstellen".


Überprüfen Sie diesen einen stackoverflow.com/questions/377102/…
Yatheesha BL

1
Sie können die Einstellungs-App programmgesteuert in iOS8 öffnen (jedoch nicht in niedrigeren Versionen von iOS) .code unten in den Antworten.
Karan Dua

Antworten:


289

Wie von erwähnt Karan Dua ist dies nun möglich , in iOS8 Verwendung UIApplicationOpenSettingsURLStringfinden 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 Ziel-C

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

Vor iOS 8:

Du kannst nicht. Wie Sie sagten, wurde dies schon oft behandelt, und das Popup, in dem Sie aufgefordert werden, die Ortungsdienste einzuschalten, wird von Apple und nicht von der App selbst bereitgestellt. Aus diesem Grund kann die Einstellungsanwendung geöffnet werden.

Hier sind einige verwandte Fragen und Artikel:

Ist es möglich, die Einstellungs-App mit openURL zu öffnen?

Programmgesteuertes Öffnen der Einstellungs-App (iPhone)

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

iPhone: Öffnen des Anwendungseinstellungsfensters über die App

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

Einstellungen öffnen App?

iOS: Sie machen falsche Einstellungen


Wenn Sie eine aussagekräftigere Antwort benötigen, können Sie versuchen, in den Apple Developer-Foren < developer.apple.com/devforums > nachzufragen oder einen Fehler unter < developer.apple.com/bugreporter > einzureichen. Wenn es sich um ein bekanntes Problem handelt, sollte es erneut auftreten als "verhält sich richtig" oder ein Duplikat des ursprünglichen Fehlers.
Vincent Gable


2
Dies ist jetzt in iOS 8 mit [NSURL URLWithString: UIApplicationOpenSettingsURLString]
LightningStryk

1
in Swift 3 - UIApplication.shared.openURL (URL (Zeichenfolge: UIApplicationOpenSettingsURLString)!)
GMHSJ

1
Seien Sie vorsichtig bei der Verwendung dieser Methode. Ich habe es verwendet und einige Monate später wurde meine App mit der folgenden Meldung von Apple abgelehnt: Ihre App verwendet das nicht öffentliche URL-Schema "prefs: root =", bei dem es sich um eine private Entität handelt. Die Verwendung nicht öffentlicher APIs ist im App Store nicht zulässig, da dies zu einer schlechten Benutzererfahrung führen kann, wenn sich diese APIs ändern. Die weitere Verwendung oder Verschleierung nicht öffentlicher APIs in zukünftigen Einsendungen dieser App kann zur Kündigung Ihres Apple Developer-Kontos sowie zur Entfernung aller zugehörigen Apps aus dem App Store führen.
Nick Kirsten

133

Aus der Antwort von @Yatheeshaless :

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

Schnell:

   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]];

23
Dies scheint den Bereich Ihrer App in der App Einstellungen zu öffnen. Benutzer müssen einige Male auf Zurück klicken, um den Hauptbildschirm der Einstellungen anzuzeigen.
wjl

1
Kleine Korrektur ..[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Paito

10
@Paito Die obige Zeile verweist auf die privaten Einstellungen der App . Gibt es eine Möglichkeit, zum Datenschutzbereich der Geräteeinstellungen zu gelangen? Bitte kommentieren Sie, wenn Sie wissen. Diese Umleitung ist möglich, da ich sie in der Karten-App gefunden habe, wo sie zu den Standorteinstellungen im Datenschutzbereich führt.
Pavan Kotesh

1
Kleine schnelle Korrektur: UIApplication.sharedApplication (). OpenURL (NSURL (Zeichenfolge: UIApplicationOpenSettingsURLString)!)
vbezhenar

1
@ PavanKotesh- Ja, aber die App-Einstellungen haben das, wofür Sie die Berechtigung benötigen. In meinem Fall benötigte ich Zugriff auf Kontakte, die in den App-Einstellungen mit dem obigen Code angezeigt werden.
Tejas K

58

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

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

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

Geben Sie hier die Bildbeschreibung ein

Schritt 2. Starten Sie die Einstellungen programmgesteuert. Dank @davidcann

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

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

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

Sehen Sie diese vollständige Namensliste hier, die von Henri Normak geteilt wird


Aktualisieren:

Gemäß dem Kommentar möchte jeder wissen, was nach dieser Änderung meines Antragsstatus passiert?

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

Nur zur Bestätigung, ich habe gerade heute Morgen die Ortungsdienste heruntergeladen und deaktiviert und dann die App gestartet, die mich um die Erlaubnis zum Standort bat, und dann war mein Alarm-Popup da, um mich über Einstellungen -> Seite Ortungsdienste -> Aktiviert -> zu senden Das ist es!!

! [HINWEIS: Ihre App wird möglicherweise abgelehnt ... auch wenn sie genehmigt wurde, kann sie in einer zukünftigen Version abgelehnt werden, wenn Sie diese Methode verwenden ...] 4


Danke, funktioniert für mich auch unter iOS 6 und 7. Haben Sie schon versucht, den Überprüfungsprozess von Apple zu durchlaufen?
Flo

1
@Flo Ich werde Sie wissen lassen, weil ich derzeit auf Beta-Tests gedrängt habe.
SwiftBoy

1
iOS 9.3. Lief wie am Schnürchen. Ich sehe sogar "Zurück zu [meinem App-Namen]" in der Einstellungs-App. Dies wird sicherlich unterstützt, da ich viele andere Apps sehe, die so etwas tun!
EricWasTaken

13
Unter iOS 10 lautet die neue URL nicht "prefs: root = ....", sondern "App-Prefs: root = ...".
Drico

1
Ihre App wird möglicherweise abgelehnt ... auch wenn sie genehmigt wurde, kann sie in einer zukünftigen Version abgelehnt werden, wenn Sie diese Methode verwenden ...
Mihir Mehta

18

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

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

3
@MarkGranoff Nein, es scheint technisch undokumentiert zu sein, aber es ist nicht so schlecht wie eine normale undokumentierte API, da es sich nur um ein URL-Schema handelt. Sie können dies zuerst mit canOpenURL: überprüfen. Außerdem gibt es hier einen Thread darüber: devforums.apple.com/message/543818
davidcann

3
Sie können in den Einstellungen gemäß diesem Artikel zu verschiedenen Bereichen gelangen . Zum Beispiel führt Sie diese URL zu den Bluetooth-Einstellungenprefs:root=General&path=Bluetooth
Programm

1
Ich habe eine Anwendung für die Verwendung einer privaten API abgelehnt, weil ich die URL geöffnet habe: @ "prefs: root = Brightness". In der Regel bedeutet nicht dokumentiert privat.
Guillaume

4
Apple hat angegeben, dass dies keine öffentliche API ist und nicht mehr unterstützt wird. Es gibt einen Fehler in dieser Ausgabe, Nummer 11253669.
Don Wilson

2
Ich habe gerade gesehen, dass dies in der Strava-App funktioniert. Schalten Sie Bluetooth aus und dann in der App ein. Dann werden Sie aufgefordert, zur Einstellungs-App zu gelangen, und es werden direkt die Bluetooth-Einstellungen aufgerufen. Dies ist für iOS5.1. Gibt es eine Möglichkeit herauszufinden, welches Schema sie verwenden?
Ameisen

14

iOS 10 Update

Apple hat die Methode geändert, um Async im Hauptthread zu öffnen. Ab sofort können die App-Einstellungen jedoch nur noch in nativen Einstellungen geöffnet werden.

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

iOS 9 Update

Es ist jetzt möglich, direkt zum Untereinstellungsmenü zu wechseln. Es muss jedoch ein URL-Schema erstellt werden. Dies kann auf zwei Arten erfolgen:

  1. XCode - Sie finden es in Ziel, Info, URL-Schema. Geben Sie dann einfach prefs ein.
  2. Direktes Hinzufügen zu * -Info.plist. 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:

Schnell

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

Ziel c

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


1
Ich habe die iOS 10.x-Lösung ausprobiert und sie hat bei mir nicht funktioniert - es passiert nichts.
Mark Peters

@ MarkPeters, hast du schon einen Weg gefunden? Es könnte eine große Hilfe sein. Vielen Dank.
Roohul Poolak

Nein, habe ich nicht. Ich weiß immer noch nicht, ob es sich um einen iOS-Fehler handelt oder ob Apple die Funktion gerade entfernt hat.
Mark Peters

Ich denke, sie arbeiten immer noch mit Extensions. Ex-App ist Magic Launcherim Appstore.
Trident

4

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)
}

Wie komme ich zum Benachrichtigungsbildschirm? denn wenn let url = URL (Zeichenfolge: "App-Prefs: root = NOTIFICATIONS_ID & path = io.artup.artup") {if #available (iOS 10.0, *) {UIApplication.shared.open (URL, CompletionHandler: .none)} } aber ich ging zur Benachrichtigung in iPhone 6 nicht in iPhone 7 plus?
user3804063

3
Dadurch wird Ihre App abgelehnt. Sie setzen es unter Verwendung der privaten API.
Bersaelor

Ich habe meine App mit diesem "App-Prefs: root"
abgelehnt

1
Betonen Sie einfach, was andere hier erwähnt haben. Verwenden Sie diese Methode nicht, da Ihre App abgelehnt wird. Durch wiederholtes Senden einer App mit einer solchen wird Ihr Entwicklerkonto geschlossen.
CodeBrew

4

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)
}

3

UIApplicationOpenSettingsURLStringDies funktioniert nur, wenn Sie zuvor eine Berechtigung 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 ,

Es öffnet die Einstellungen, stürzt dann aber ab. Der Grund, es gibt 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 unter iOS <10 nicht überprüfen.

Außerdem konnte ich unten Code von einigen Kernpunkten finden und es funktioniert auch unter iOS 10 einwandfrei. Ich bin mir jedoch nicht sicher, ob dies vom Apple-Überprüfungsteam genehmigt wird oder nicht.

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


3

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

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-Kern .

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


3

Anscheinend können Sie die prefs:<area>URL verwenden, um die Einstellungen zu öffnen und zu bestimmten Bereichen zu wechseln. Apple könnte diese ändern und Ihre App beschädigen. Überprüfen Sie daher immer, ob Sie sie zuerst öffnen können.

In diesem Artikel haben sie einige für iOS 13.1 aufgelistet:

Einstellungs-URLs

iCloud

  • iCloud: prefs:root=CASTLE
  • iCloud Backup: prefs:root=CASTLE&path=BACKUP

Funkgeräte

  • W-lan: prefs:root=WIFI
  • Bluetooth: prefs:root=Bluetooth
  • Zellular: prefs:root=MOBILE_DATA_SETTINGS_ID

Persönlicher Hotspot

  • Persönlicher Hotspot: prefs:root=INTERNET_TETHERING
  • Persönlicher Hotspot ⇾ Familienfreigabe: prefs:root=INTERNET_TETHERING&path=Family%20Sharing
  • Persönlicher Hotspot ⇾ WLAN-Passwort: prefs:root=INTERNET_TETHERING&path=Wi-Fi%20Password

VPN

  • VPN: prefs:root=General&path=VPN

Benachrichtigungen

  • Benachrichtigungen: prefs:root=NOTIFICATIONS_ID
  • Benachrichtigungen ⇾ Siri Vorschläge: prefs:root=NOTIFICATIONS_ID&path=Siri%20Suggestions

Geräusche

  • Geräusche: prefs:root=Sounds
  • Klingelton: prefs:root=Sounds&path=Ringtone

Störe nicht

  • Störe nicht: prefs:root=DO_NOT_DISTURB
  • Nicht stören ⇾ Anrufe zulassen von: prefs:root=DO_NOT_DISTURB&path=Allow%20Calls%20From

Bildschirmzeit

  • Bildschirmzeit: prefs:root=SCREEN_TIME
  • Bildschirmzeit ⇾ Ausfallzeit: prefs:root=SCREEN_TIME&path=DOWNTIME
  • Bildschirmzeit ⇾ App-Limits: prefs:root=SCREEN_TIME&path=APP_LIMITS
  • Bildschirmzeit ⇾ Immer erlaubt: prefs:root=SCREEN_TIME&path=ALWAYS_ALLOWED

Allgemeines

  • Allgemeines: prefs:root=General
  • Allgemeines ⇾ Über: prefs:root=General&path=About
  • Allgemeines ⇾ Software-Update: prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • Allgemeines ⇾ CarPlay: prefs:root=General&path=CARPLAY
  • Allgemein ⇾ Hintergrund-App aktualisieren: prefs:root=General&path=AUTO_CONTENT_DOWNLOAD
  • Allgemeines ⇾ Multitasking (nur iPad): prefs:root=General&path=MULTITASKING
  • Allgemeines ⇾ Datum und Uhrzeit: prefs:root=General&path=DATE_AND_TIME
  • Allgemeines ⇾ Tastatur: prefs:root=General&path=Keyboard
  • Allgemeines ⇾ Tastatur ⇾ Tastaturen: prefs:root=General&path=Keyboard/KEYBOARDS
  • Allgemeines ⇾ Tastatur ⇾ Hardwaretastatur: prefs:root=General&path=Keyboard/Hardware%20Keyboard
  • Allgemeines ⇾ Tastatur ⇾ Textersetzung: prefs:root=General&path=Keyboard/USER_DICTIONARY
  • Allgemeines ⇾ Tastatur ⇾ Einhandtastatur: prefs:root=General&path=Keyboard/ReachableKeyboard
  • Allgemeines ⇾ Sprache & Region: prefs:root=General&path=INTERNATIONAL
  • Allgemeines ⇾ Wörterbuch: prefs:root=General&path=DICTIONARY
  • Allgemeines ⇾ Profile: prefs:root=General&path=ManagedConfigurationList
  • Allgemein ⇾ Zurücksetzen: prefs:root=General&path=Reset

Kontrollzentrum

  • Kontrollzentrum: prefs:root=ControlCenter
  • Control Center ⇾ Steuerelemente anpassen: prefs:root=ControlCenter&path=CUSTOMIZE_CONTROLS

Anzeige

  • Anzeige: prefs:root=DISPLAY
  • Anzeige ⇾ Automatische Sperre: prefs:root=DISPLAY&path=AUTOLOCK
  • Anzeige ⇾ Textgröße: prefs:root=DISPLAY&path=TEXT_SIZE

Barrierefreiheit

  • Barrierefreiheit: prefs:root=ACCESSIBILITY

Hintergrund

  • Hintergrund: prefs:root=Wallpaper

Siri

  • Siri: prefs:root=SIRI

Apfelstift

  • Apple Pencil (nur iPad): prefs:root=Pencil

Gesichtserkennung

  • Gesichtsausweis: prefs:root=PASSCODE

Notfall SOS

  • Notfall-SOS: prefs:root=EMERGENCY_SOS

Batterie

  • Batterie: prefs:root=BATTERY_USAGE
  • Batterie ⇾ Batteriezustand (nur iPhone): prefs:root=BATTERY_USAGE&path=BATTERY_HEALTH

Privatsphäre

  • Privatsphäre: prefs:root=Privacy
  • Datenschutz ⇾ Ortungsdienste: prefs:root=Privacy&path=LOCATION
  • Datenschutz ⇾ Kontakte: prefs:root=Privacy&path=CONTACTS
  • Datenschutz ⇾ Kalender: prefs:root=Privacy&path=CALENDARS
  • Datenschutz ⇾ Erinnerungen: prefs:root=Privacy&path=REMINDERS
  • Datenschutz ⇾ Fotos: prefs:root=Privacy&path=PHOTOS
  • Datenschutz ⇾ Mikrofon: prefs:root=Privacy&path=MICROPHONE
  • Datenschutz ⇾ Spracherkennung: prefs:root=Privacy&path=SPEECH_RECOGNITION
  • Datenschutz ⇾ Kamera: prefs:root=Privacy&path=CAMERA
  • Datenschutz ⇾ Antrag: prefs:root=Privacy&path=MOTION\

Appstore

  • Appstore: prefs:root=STORE
  • App Store ⇾ App-Downloads: prefs:root=STORE&path=App%20Downloads
  • App Store ⇾ Video-Autoplay: prefs:root=STORE&path=Video%20Autoplay

Brieftasche

  • Brieftasche: prefs:root=PASSBOOK

Passwörter & Konten

  • Passwörter & Konten: prefs:root=ACCOUNTS_AND_PASSWORDS
  • Passwörter und Konten ⇾ Neue Daten abrufen: prefs:root=ACCOUNTS_AND_PASSWORDS&path=FETCH_NEW_DATA
  • Passwörter & Konten ⇾ Konto hinzufügen: prefs:root=ACCOUNTS_AND_PASSWORDS&path=ADD_ACCOUNT

Mail

  • Mail: prefs:root=MAIL
  • Mail ⇾ Vorschau: prefs:root=MAIL&path=Preview
  • Mail ⇾ Swipe-Optionen: prefs:root=MAIL&path=Swipe%20Options
  • Mail ⇾ Benachrichtigungen: prefs:root=MAIL&path=NOTIFICATIONS
  • Mail ⇾ Gesperrt: prefs:root=MAIL&path=Blocked
  • Mail ⇾ Stummgeschaltete Thread-Aktion: prefs:root=MAIL&path=Muted%20Thread%20Action
  • Mail ⇾ Blockierte Absenderoptionen: prefs:root=MAIL&path=Blocked%20Sender%20Options
  • Mail ⇾ Adressen markieren: prefs:root=MAIL&path=Mark%20Addresses
  • Mail ⇾ Angebotsstufe erhöhen: prefs:root=MAIL&path=Increase%20Quote%20Level
  • Mail ⇾ Anhänge mit Antworten einschließen: prefs:root=MAIL&path=Include%20Attachments%20with%20Replies
  • Mail ⇾ Unterschrift: prefs:root=MAIL&path=Signature
  • Mail ⇾ Standardkonto: prefs:root=MAIL&path=Default%20Account

Kontakte

  • Kontakte: prefs:root=CONTACTS

Kalender

  • Kalender: prefs:root=CALENDAR
  • Kalender ⇾ Alternative Kalender: prefs:root=CALENDAR&path=Alternate%20Calendars
  • Kalender ⇾ Synchronisieren: prefs:root=CALENDAR&path=Sync
  • Kalender ⇾ Standardwarnzeiten: prefs:root=CALENDAR&path=Default%20Alert%20Times
  • Kalender ⇾ Standardkalender: prefs:root=CALENDAR&path=Default%20Calendar

Anmerkungen

  • Anmerkungen: prefs:root=NOTES
  • Hinweise ⇾ Standardkonto: prefs:root=NOTES&path=Default%20Account
  • Hinweise ⇾ Passwort: prefs:root=NOTES&path=Password
  • Notizen ⇾ Notizen sortieren nach: prefs:root=NOTES&path=Sort%20Notes%20By
  • Notizen ⇾ Neue Notizen Beginnen mit: prefs:root=NOTES&path=New%20Notes%20Start%20With
  • Hinweise ⇾ Überprüfte Elemente sortieren: prefs:root=NOTES&path=Sort%20Checked%20Items
  • Hinweise ⇾ Linien & Gitter: prefs:root=NOTES&path=Lines%20%26%20Grids
  • Notizen ⇾ Greifen Sie über den Sperrbildschirm auf Notizen zu: prefs:root=NOTES&path=Access%20Notes%20from%20Lock%20Screen

Erinnerungen

  • Erinnerungen: prefs:root=REMINDERS
  • Erinnerungen ⇾ Standardliste: prefs:root=REMINDERS&path=DEFAULT_LIST

Sprachnotizen

  • Sprachnotizen: prefs:root=VOICE_MEMOS

Telefon

  • Telefon: prefs:root=Phone

Mitteilungen

  • Mitteilungen: prefs:root=MESSAGES

FaceTime

  • FaceTime: prefs:root=FACETIME

Karten

  • Karten: prefs:root=MAPS
  • Karten ⇾ Fahren & Navigation: prefs:root=MAPS&path=Driving%20%26%20Navigation
  • Karten ⇾ Transit: prefs:root=MAPS&path=Transit

Kompass

  • Kompass: prefs:root=COMPASS

Messen

  • Messen: prefs:root=MEASURE

Safari

  • Safari: prefs:root=SAFARI
  • Safari ⇾ Inhaltsblocker: prefs:root=SAFARI&path=Content%20Blockers
  • Safari ⇾ Downloads: prefs:root=SAFARI&path=DOWNLOADS
  • Safari ⇾ Tabs schließen: prefs:root=SAFARI&path=Close%20Tabs
  • Safari ⇾ Verlauf und Daten löschen: prefs:root=SAFARI&path=CLEAR_HISTORY_AND_DATA
  • Safari ⇾ Seitenzoom: prefs:root=SAFARI&path=Page%20Zoom
  • Safari ⇾ Desktop-Website anfordern: prefs:root=SAFARI&path=Request%20Desktop%20Website
  • Safari ⇾ Leser: prefs:root=SAFARI&path=Reader
  • Safari ⇾ Kamera: prefs:root=SAFARI&path=Camera
  • Safari ⇾ Mikrofon: prefs:root=SAFARI&path=Microphone
  • Safari ⇾ Ort: prefs:root=SAFARI&path=Location
  • Safari ⇾ Fortgeschrittene: prefs:root=SAFARI&path=ADVANCED

Nachrichten

  • Nachrichten: prefs:root=NEWS

Gesundheit

  • Gesundheit: prefs:root=HEALTH

Verknüpfungen

  • Verknüpfungen: prefs:root=SHORTCUTS

Musik

  • Musik: prefs:root=MUSIC
  • Musik ⇾ Mobilfunkdaten: prefs:root=MUSIC&path=com.apple.Music:CellularData
  • Musik ⇾ Speicher optimieren: prefs:root=MUSIC&path=com.apple.Music:OptimizeStorage
  • Musik ⇾ EQ: prefs:root=MUSIC&path=com.apple.Music:EQ
  • Musik ⇾ Lautstärkebegrenzung: prefs:root=MUSIC&path=com.apple.Music:VolumeLimit

Fernseher

  • Einstellungen ⇾ TV: prefs:root=TVAPP

Fotos

  • Fotos: prefs:root=Photos

Kamera

  • Kamera: prefs:root=CAMERA
  • Kamera ⇾ Video aufnehmen: prefs:root=CAMERA&path=Record%20Video
  • Kamera ⇾ Aufnahme Slo-mo: prefs:root=CAMERA&path=Record%20Slo-mo

Bücher

  • Bücher: prefs:root=IBOOKS

Spielezentrum

  • Spielezentrum: prefs:root=GAMECENTER

1

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

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

1

SWIFT 4.0

'openURL' war in iOS 10.0 veraltet: Verwenden Sie stattdessen openURL: options: finishHandler :.

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

1

Swift 4

Ich ziehe es vor, die Umgebung sicherer zu öffnen.

if let settingUrl = URL(string:UIApplicationOpenSettingsURLString) {

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

0

Schnell Mit der folgenden Funktion können Sie die Einstellungs-App mit der Bluetooth-Seite öffnen

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

Auch dies würde die Einstellungen der App nicht öffnen. Dies würde die Einstellungs-App mit Bluetooth öffnen, da dies eine tiefe Verbindung zu Bluetooth darstellt.


0

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;
}
}

Viel Spaß beim Codieren :)


3
Dadurch wird Ihre App abgelehnt. Hatte es mir gerade passiert.
Bersaelor

Ist das so, aber diese Codezeile bringt Sie direkt zum gewünschten Ort
Praveen Sharma

1
Ja, es wird dich dorthin bringen. Ich sage nicht, dass es nicht funktioniert, ich weise nur darauf hin, dass Sie während der App-Überprüfung abgelehnt werden. "prefs: root" ist ein privates URL-Schema, wie uns das Bewertungsteam mitgeteilt hat. (Sie könnten Glück haben und sie bemerken es für eine Weile nicht, wir hatten die Funktion für eine Weile und haben mehrere Bewertungen bestanden, bevor der Rezensent es bemerkte)
Bersaelor

Vielen Dank für die Informationen, ich würde etwas anderes ausprobieren, aber im Moment stecke ich in der VPN-Konnektivität fest und finde eine Lösung dafür.
Praveen Sharma

0

So fügen Sie der akzeptierten Antwort Folgendes hinzu: (aus der Apple-Entwicklerdokumentation) "Wenn Sie die aus dieser Zeichenfolge erstellte URL (openSettingsURLString) öffnen, startet das System die App" Einstellungen "und zeigt die benutzerdefinierten Einstellungen der App an, falls vorhanden." Wenn Sie also Einstellungen für Ihre App öffnen möchten, erstellen Sie Ihr eigenes Settings.bundle.


-1

Fügen Sie dies Ihrer Klasse hinzu,

 public class func showSettingsAlert(title:String,message:String,onVC viewController:UIViewController,onCancel:(()->())?){
            YourClass.show2ButtonsAlert(onVC: viewController, title: title, message: message, button1Title: "Settings", button2Title: "Cancel", onButton1Click: {
                if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString){
                    UIApplication.sharedApplication().openURL(settingsURL)
                }
                }, onButton2Click: {
                    onCancel?()
            })
        }

 public class func show2ButtonsAlert(onVC viewController:UIViewController,title:String,message:String,button1Title:String,button2Title:String,onButton1Click:(()->())?,onButton2Click:(()->())?){
            dispatch_async(dispatch_get_main_queue()) {
                let alert : UIAlertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)

                alert.addAction(UIAlertAction(title: button1Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton1Click?()
                }))

                alert.addAction(UIAlertAction(title: button2Title, style:.Default, handler: { (action:UIAlertAction) in
                    onButton2Click?()
                }))

                viewController.presentViewController(alert, animated: true, completion: nil)
            }
        }

Rufen Sie so an,

YourClass.showSettingsAlert("App would like to access camera", message: "App would like to access camera desc", onVC: fromViewController, onCancel: {
  print("canceled")
})
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.