Niedawno odkryłem niesamowity schemat adresu URL ustawień niestandardowych iOS5 , który można szczegółowo wyjaśnić na tej wspaniałej stronie internetowej .
Przekonałem się, że to działa, kierując użytkownika do aplikacji Ustawienia z mojej aplikacji:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General"]];
Ale wydaje się, że nie można kierować bezpośrednio do ścieżki ograniczeń za pomocą path
parametru:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];
Czy ktoś znalazł dokumentację na ten temat lub był w stanie to naprawić?
Każdy wgląd byłby bardzo mile widziany. Próbuję skłonić użytkownika do włączenia zakupów w aplikacji i wolę, aby użytkownik nie klikał ręcznie ograniczeń (niezbyt oczywiste).
ios
iphone
settings
url-scheme
uiapplication
kturner
źródło
źródło
Odpowiedzi:
JAK: ODPOWIEDŹ @Nix Wang TO NIE DZIAŁA W IOS 10
OSTRZEŻENIE: ta metoda nie będzie działać na urządzeniach z systemem iOS 5.1 i nowszym - zobacz komentarz Hlung poniżej.
Możliwe, że
path
komponent ma inną nazwę niż rzeczywista sekcja, ale możliwe jest również, że obecnie nie możesz uzyskać dostępu do tej sekcji bezpośrednio z adresu URL. Znalazłem listę możliwych adresów URL i nie ma na niej ograniczeń, może po prostu jeszcze się nie dowiedziała.Lista obecnie znanych adresów URL w aplikacji Ustawienia:
źródło
[NSURL URLWithString:UIApplicationOpenSettingsURLString]
Od iOS8 możesz otworzyć wbudowaną aplikację Ustawienia za pomocą:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString]; if ([[UIApplication sharedApplication] canOpenURL:url]) { [[UIApplication sharedApplication] openURL:url]; }
Rzeczywisty ciąg adresu URL to
@"app-settings:"
. Próbowałem dołączyć różne sekcje do ciągu („Bluetooth”, „OGÓLNE” itp.), Ale wydaje się, że działa tylko link do głównego ekranu ustawień. Opublikuj odpowiedź, jeśli dowiesz się inaczej.źródło
Jeśli dodasz schemat adresu URL prefs do swojej aplikacji na iOS, pozwoli ci to na użycie wszystkich tych schematów, które mogliśmy w iOS 5. Testowałem go na iOS 9, ale myślę, że będzie działać również na starszych wersjach.
źródło
Aktualizacja:
prefs:
NIE będzie działać od iOS 10.źródło
prefs:
już nie działa, działa (przynajmniej naApp-Prefs::root=Settings&path=General
Tak, widziałem to (i wiele więcej), nawet zaimplementowałem to w aplikacji testowej. Naprawdę potrzebuję uzyskać ostateczne słowo od Apple, ale konsensus społeczności jest taki, że Apple zabronił tego w wersji 5.1 po tym, jak zostało publicznie „odkryte / opublikowane”, więc wnioski zawierające je nie zostaną zaakceptowane.
Aktualizacja 08/01/12: Zapytałem Apple za pośrednictwem mojego konta programisty, czy istnieje sposób na programowe uruchomienie okna dialogowego Ustawienia WiFi. Oto odpowiedź:
źródło
W iOS 9 znów działa!
Aby otworzyć Ustawienia> Ogólne> Klawiatura , używam:
prefs:root=General&path=Keyboard
Co więcej, można przejść dalej do klawiatur :
prefs:root=General&path=Keyboard/KEYBOARDS
źródło
LSApplicationQueriesSchemes
winfo.plist
?Chciałem otworzyć menu Bluetooth w aplikacji Ustawienia, a powyższa ścieżka (prefs: root = General & path = Bluetooth) nie działa dla mnie. To, co skończyło się dla mnie pracą, to
UIApplication.sharedApplication().openURL(NSURL(string:"prefs:root=Bluetooth")!)
Upewnij się, że masz
prefs
zdefiniowany schemat adresu URL.źródło
prefs
rzeczy.Rozwiązanie dla iOS10. Działa w porządku.
NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"]; [[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
źródło
Od iOS10 możesz używać
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root")!)
aby otworzyć ustawienia ogólne.
możesz również dodać znane adresy URL (możesz je zobaczyć w najczęściej ocenianej odpowiedzi), aby otworzyć określone ustawienia. Na przykład poniższy otwiera touchID i hasło.
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
źródło
App-Prefs
to prywatny interfejs API, który prowadzi do odrzucenia aplikacji podczas sprawdzania.Oto coś, co znalazłem:
Po zdefiniowaniu schematu adresu URL „prefs”, „prefs: root = Safari & path = ContentBlockers” działa w symulatorze (wersja angielska iOS 9.1 ), ale nie działa w symulatorze (chiński uproszczony) . Po prostu przeskakuje do Safari, ale nie do blokowania treści. Jeśli Twoja aplikacja jest międzynarodowa, zachowaj ostrożność.
Aktualizacja: Nie wiem dlaczego, teraz nie mogę już przeskoczyć do ContentBlockers, ten sam kod, ta sama wersja, teraz nie działa. :(
Na prawdziwych urządzeniach (mój to iPhone 6S i iPad mini 2), „Safari” powinno być „SAFARI” , „Safari” nie działa na prawdziwym urządzeniu, „SAFARI” teraz działa na symulatorze:
#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) }
Jak dotąd nie znalazłem żadnych różnic między iPhonem a iPadem.
źródło
Działa dobrze w przypadku ustawień powiadomień aplikacji na IOS 10 (przetestowane)
if(&UIApplicationOpenSettingsURLString != nil){ [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]]; }
źródło
iOS 10
Posługiwać się
app-prefs:
App-prefs:root=MOBILE_DATA_SETTINGS_ID
Zobacz sedno
źródło
Aktualizuję tutaj jedną wiadomość. Używanie tylko „prefs:” NIE jest odrzucane przez Apple, przetestowałem go i sprawdziłem, czy jest zatwierdzony w sklepie z aplikacjami (w sierpniu 2016 r.). dzięki.
źródło
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=DO_NOT_DISTURB"]];
do otwartego ustawienia DND urządzenia. Apple to odrzuci?