Настройки за стартиране на iOS -› URL схема за ограничения

Наскоро открих страхотната iOS5 персонализирана URL схема за настройки, която може да бъде обяснена подробно в това страхотно уебсайт.

Открих, че това работи, като насочва потребителя към приложението Настройки от моето приложение:

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

Но изглежда не може да се насочи директно към пътя Ограничения чрез параметъра path:

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

Някой намерил ли е документация за това или успял ли е да накара това да работи?

Всяко прозрение ще бъде високо оценено. Опитвам се да накарам потребителя да активира покупките в приложението и предпочитам да не щраквам ръчно върху Ограничения (не е много очевидно).


person kturner    schedule 23.11.2011    source източник
comment
някой знае ли url за Touch ID & Passcode?   -  person Fabian Köbel    schedule 15.02.2016
comment
използвайте това за идентификатор на докосване: prefs:root=TOUCHID_PASSCODE (stackoverflow.com/questions/35410746/)   -  person Fabian Köbel    schedule 30.05.2016


Отговори (13)


КАТО ОТГОВОРЪТ НА @Nix Wang, ТОВА НЕ РАБОТИ В IOS 10


ПРЕДУПРЕЖДЕНИЕ: Този метод няма да работи за устройства, работещи с iOS 5.1 и по-нова версия – вижте коментара на Hlung по-долу.

Възможно е компонентът path да има различно име от действителната секция, но също така е възможно в момента да не можете да получите достъп до тази секция направо от URL адрес. Намерих списък с възможни URL адреси и ограниченията не са в него, може би просто все още не е намерен.

Списък с текущо известни URL адреси в приложението Настройки:

  • prefs:root=Общи&path=Относно
  • prefs:root=General&path=ACCESSIBILITY
  • prefs:root=AIRPLANE_MODE
  • prefs:root=General&path=AUTOLOCK
  • prefs:root=Общи&path=USAGE/CELLULAR_USAGE
  • prefs:root=Яркост
  • prefs:root=Общи&path=Bluetooth
  • prefs:root=Общи&path=DATE_AND_TIME
  • prefs:root=FACETIME
  • prefs:root=Общи
  • prefs:root=Общи&path=Клавиатура
  • prefs:root=CASTLE
  • prefs:root=CASTLE&path=STORAGE_AND_BACKUP
  • prefs:root=General&path=INTERNATIONAL
  • prefs:root=LOCATION_SERVICES
  • prefs:root=ACCOUNT_SETTINGS
  • prefs:root=МУЗИКА
  • prefs:root=MUSIC&path=EQ
  • prefs:root=MUSIC&path=VolumeLimit
  • prefs:root=Общ&path=Мрежа
  • prefs:root=NIKE_PLUS_IPOD
  • prefs:root=БЕЛЕЖКИ
  • prefs:root=NOTIFICATIONS_ID
  • prefs:root=телефон
  • prefs:root=Снимки
  • prefs:root=Общи&path=ManagedConfigurationList
  • prefs:root=Общи&path=Нулиране
  • prefs:root=Звуци&path=Мелодия
  • prefs:root=Safari
  • prefs:root=Общ&path=Помощник
  • prefs:root=Звуци
  • prefs:root=General&path=SOFTWARE_UPDATE_LINK
  • prefs:root=STORE
  • prefs:root=TWITTER
  • prefs:root=General&path=USAGE
  • prefs:root=VIDEO
  • prefs:root=Общи&path=Мрежа/VPN
  • prefs:root=Тапет
  • prefs:root=WIFI
  • prefs:root=INTERNET_TETHERING
person Henri Normak    schedule 23.11.2011
comment
Анри, благодаря за бързия отговор. Това е много по-подробен списък на URL схеми за настройки, който успях да намеря. Със сигурност ще направя проучване и ще публикувам, ако мога да намеря нещо конкретно относно пътя на ограниченията. наздраве! - person kturner; 24.11.2011
comment
Няма проблем, ако завършите със същия списък като мен, не забравяйте да маркирате отговора ми като приет, за да уведомите и другите. - person Henri Normak; 24.11.2011
comment
Има ли официална документация за това? - person bsarrazin; 20.12.2011
comment
Не намерих нищо за наличните URL адреси, само за това как работят URL адресите. Този списък е съставен от различни сайтове. - person Henri Normak; 22.12.2011
comment
Разбира се, тъй като URL схемите за приложението Настройки бяха въведени с iOS 5, благодаря за вниманието! - person Henri Normak; 06.01.2012
comment
github.com/Burnsoft/Settings-Swipe проект с отворен код, който добавих към github, може да е от интерес за тези, които търсят преки пътища към настройките. Ник - person Nik Burns; 01.02.2012
comment
Струва си да се отбележи, че Apple ще отхвърли всички приложения, които използват или се позовават на URL схемата за предпочитания. - person Nik Burns; 01.02.2012
comment
@NikBurns имаш ли справка за това? - person Niklas; 06.02.2012
comment
само от опит с процеса на преглед в AppStore. rdar://5864941, ако искате да го измамите. - person Nik Burns; 07.02.2012
comment
Някой попадал ли е на URL адреса за настройките на Mail, Contacts, Calendar | Fetch New Data? - person Jonathan Vaught; 09.02.2012
comment
Само едно любезно предупреждение, idownloadblog.com/2011/ 11/29/iphone-5-1-disables-shortcuts каза, че всички URL схеми към настройките на iOS ще бъдат премахнати в iOS5.1 (така че URL адреси като prefs:root=General&path=Network вече няма да работи) Така че, моля, имайте предвид. - person Hlung; 23.02.2012
comment
Те не са напълно премахнати, просто трябва да поставите тези URL връзки в бутон в UIAlertView. Така че просто поставете предупреждение в UIAlertView, че приложението ще отиде на заден план и настройките ще се отворят и след това OK и Cancel и т.н. - person zambono; 27.05.2012
comment
@zambono Можете ли да потвърдите, че това работи и приложенията се одобряват/функционират правилно на различни устройства и версии на iOS? - person Chris; 15.06.2012
comment
Вече не работи, преди време работеше на едно от моите приложения, но вече не. - person zambono; 04.07.2012
comment
От iOS8 можете да стартирате вграденото приложение за настройки с url: [NSURL URLWithString:UIApplicationOpenSettingsURLString] - person Jason Moore; 30.09.2014
comment
Струва си да се отбележи, че последният фрагмент ви отвежда до специфичните за приложението настройки за поверителност, а не само до приложението за настройки. - person Henri Normak; 01.10.2014
comment
@JasonMoore има ли начин да отворите тези настройки с помощта на връзка (с помощта на HTML/JS)? - person AmineG; 03.11.2014
comment
Това беше добавено отново в iOS 9. Проверете: stackoverflow.com/questions/37399893/ - person guyromb; 25.05.2016
comment
@FabianKöbel URL адресът за Touch ID и парола е „TOUCHID_PASSCODE“ (stackoverflow.com/a/35411090/4493512), но не съм сигурен дали това не трябва да бъде отхвърлено при публикуване. - person KoreanXcodeWorker; 27.06.2016
comment
@MaggiePhillips благодаря ти. Вече стартирахме приложения с това, не беше причина да ги отхвърляме. - person Fabian Köbel; 27.06.2016
comment
@FabianKöbel Ох, успяхте ли да стартирате приложението си с помощта на 'prefs:root=TOUCHED_PASSCODE'?? тогава веднага ще го използвам. - person KoreanXcodeWorker; 27.06.2016
comment
@MaggiePhillips да, тези приложения вече са налични в App Store. Нямаше проблем. - person Fabian Köbel; 27.06.2016
comment
Работи добре в iOS 9.2.3 Check URL Scheme: stackoverflow.com/questions/5655674/ - person Abhishek Thapliyal; 17.08.2016
comment
Всяко решение/алтернатива за ios10, моля. - person ranjit.x.singh; 27.09.2016
comment
Това законно ли е? Успешното изпращане на приложение не означава, че то е законно. В крайна сметка може да се провали в бъдеще.. има ли някакви доказателства?..не мога да намеря.. - person Stas; 23.03.2017
comment
Почти всички те са недокументирани, поради което не трябва да се използват наистина, без да сте готови да се счупят. - person Henri Normak; 25.03.2017
comment
Работи, ако промените prefs на App-prefs, като: App-prefs:root=CASTLE&path=STORAGE_AND_BACKUP Но законно ли е това? - person Ansari; 28.03.2017
comment
App-Prefs:root=Bluetooth работи за мен в iOS 10, но не съм сигурен дали е легитимен или не - person Umair Aamir; 05.05.2017
comment
App-Prefs:root=GAMECENTER работи върху 10.3.3 (14G60) [актуализирано днес] - person Michael Garito; 26.07.2017
comment
@MichaelGarito Да, човече! Наистина работи перфектно! Благодаря, че ми спестихте времето! - person Genevios; 10.08.2017
comment
iOS 10, пряк път за услуги за местоположение = App-Prefs:root=Privacy&path=LOCATION - person Sasho; 10.08.2017

От iOS8 можете да отворите вграденото приложение за настройки с:

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

Действителният URL низ е @"app-settings:". Опитах се да добавя различни секции към низа („Bluetooth“, „GENERAL“ и т.н.), но изглежда само свързването към главния екран с настройки работи. Публикувайте отговор, ако разберете друго.

person Jason Moore    schedule 30.09.2014
comment
Това е така, защото това конкретно повикване е URL адресът за стартиране на настройките. Отваря персонализираните настройки на приложението, ако съществуват. Ако не, то просто отваря приложението Настройки на главния екран. разработчик. apple.com/library/ios/documentation/UIKit/Reference/ - person JAL; 01.10.2014
comment
Фантастичен отговор, ако приложението ви има конкретни настройки, които искате да активирате/деактивирате. Всичко на едно място и не е необходимо потребителят да навигира през Настройки, за да стигне до желаната конфигурация. Благодаря! - person kyleturner; 11.12.2014
comment
@FabianKöbel успяхте ли да намерите такъв за TouchID и парола? - person ShayanK; 28.05.2016
comment
@AspersionCast: можете да използвате това: prefs:root=TOUCHID_PASSCODE (stackoverflow.com/questions/35410746/) - person Fabian Köbel; 30.05.2016
comment
Това изглежда е единственият в момента одобрен от Apple метод за стартиране на приложението Настройки. - person u2Fan; 01.10.2018
comment
Не, Apple отхвърли нашето приложение поради тези предпочитания: - person ergunkocak; 30.04.2019

Ако добавите URL схемата за предпочитания към вашето приложение за iOS, това ще ви позволи да използвате всички тези схеми, които можехме в iOS 5. Тествах я на iOS 9, но мисля, че ще работи и на по-стари версии.

person Pedro Tôrres    schedule 06.07.2015
comment
Този трик работи само при стартиране на iOS 8, когато няма нужда от него. - person Valeriy Van; 08.07.2015
comment
Но същото в iOS 8 не ви е позволено да отваряте WiFi настройки, например, ако не добавите този URL срам към приложението си. - person Pedro Tôrres; 10.07.2015
comment
Да, прав си. Не съм мислил за този случай на употреба. - person Valeriy Van; 10.07.2015
comment
@conorgriffin За вас и всеки друг, който се чуди, настройката живее под: Targets | (Приложение) | Информация | URL типове | + - person Kevin Sylvestre; 20.09.2015
comment
Някой каза, че е бил отхвърлен за използване на prefs:root url. stackoverflow.com/questions/ 8246070/ - person Hlung; 04.04.2016

Актуализация:

prefs: НЯМА да работи от iOS 10.

person Nix Wang    schedule 08.08.2016
comment
Каква е алтернативата? - person OXXY; 18.08.2016
comment
Това е лудост, тъй като този официален документ на Apple (developer.apple.com/library /ios/qa/qa1924/_index.html) нарочно адресира проблема с предпочитанията и датира от 8/2/2016. - person daspianist; 02.09.2016
comment
Този документ казва само да го използвате за настройки на клавиатурата (всичко различно от тази конкретна употреба е нарушение.) - person Peter Johnson; 07.09.2016
comment
За съжаление изглежда не работи дори за настройки на клавиатурата в iOS 10. - person Intrications; 13.09.2016
comment
Има ли причина да го премахнат? Или е бъг? Ако е така, трябва да го докладвате като бъг на Apple - person shim; 15.09.2016
comment
хей, вярно е, че това вече не работи на iOS10, но това, което е смешно е, че приложения като google maps / apple maps, когато деактивирате услугите за местоположение в настройките и се опитате да извикате функцията за навигация в тези приложения, и двете приложения могат за отваряне на настройки / услуги за местоположение дори на iOS 10 :).. хакери, или не знам (нищо чудно в случай на приложение на Apple, но в случай на google maps..) - person luky; 16.11.2016
comment
@ Nix Wang , Всеки друг възможен метод или алтернатива за предпочитания: в iOS 10. - person Gunja Patel; 22.11.2016
comment
Въпреки че prefs: вече не работи, следното работи (поне при отваряне като цяло): App-Prefs::root=Settings&path=General - person daspianist; 06.01.2017
comment
Алтернативата е App-Prefs: от iOS 10 на вардс. - person iOS; 16.07.2020

Да, видях това (и много други), дори го внедрих в тестово приложение. Наистина трябва да получим окончателната дума от Apple, но консенсусното мнение на общността е, че Apple го забрани в 5.1, след като беше публично „открит/публикуван“, така че приложенията, които го съдържат, няма да бъдат приети.

01.08.12 г. Актуализация: Попитах Apple чрез моя акаунт на програмист дали има начин за програмно стартиране на диалоговия прозорец за настройки на WiFi. Ето отговора:

„Нашите инженери прегледаха вашата заявка и стигнаха до заключението, че няма поддържан начин за постигане на желаната функционалност, предвид текущите конфигурации на системата за доставка.“

person Dan    schedule 27.06.2012
comment
Препоръчвам на всеки, който се нуждае от тази функция, да регистрира официален доклад за грешка. Колкото повече се съобщава, толкова по-видимо ще бъде и по-голям шанс в бъдеще да бъде представено поддържано решение. bugreport.apple.com - person Matt Connolly; 29.04.2013

В iOS 9 работи отново!

За да отворя Настройки > Общи > Клавиатура, използвам:

prefs:root=General&path=Keyboard

Освен това е възможно да отидете по-далеч до Клавиатури:

prefs:root=General&path=Keyboard/KEYBOARDS
person Mikhail    schedule 29.09.2015
comment
Току-що забелязах това в приложението PopKey. Опитах URL адреса за Настройки › Wi-Fi настройки и той също работи. Да се ​​надяваме, че това ще остане. - person Jamie McDaniel; 29.09.2015
comment
Трябва ли тези схеми да се добавят към LSApplicationQueriesSchemes в info.plist? - person Warpling; 30.09.2015
comment
Не, не го правят. Просто използвайте метода му с openURL:. - person Mikhail; 30.09.2015
comment
Опитвам се да използвам това за връзка към настройки от уеб страница и изглежда, че работи в Safari на iPhone, но не и на iPad. И двете са на 9.0.2. Сериозно, Apple? - person Randy H.; 05.10.2015
comment
Благодаря за коментара. Аз също ще се опитам да проверя този случай и да ви отговоря. - person Mikhail; 05.10.2015
comment
Все още е необходимо да добавите предпочитана URL схема за насочване - person shim; 07.10.2015
comment
Това работи в симулатора за мен, но не и на устройството. iOS 9.1. - person Aral Balkan; 22.10.2015
comment
Е, много е странно, защото в момента проверих тази функция на моя iPhone 5S с вграден iOS 9.1 и тя работи както обикновено. - person Mikhail; 23.10.2015
comment
Това не работи за мен на iPod touch от 5-то поколение, работещ с iOS 9.0.2. Добавих prefs към LSApplicationQueriesSchemes и canOpenURL: връща NO за всеки URL адрес, започващ с prefs:. И openURL: не прави нищо. - person rmaddy; 30.10.2015
comment
Здравейте, Михаил Гасаонов, пробвах го в iOS 9.1 според публикацията ви, но не работи... [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=TWITTER"]]; - person Gautam Sareriya; 23.11.2015
comment
Този код работи добре на iPhone 5, 5S, 6 и 6 Plus (с iOS 9+), но не и на най-новите iPhone 6S и 6S Plus. - person daspianist; 30.01.2016
comment
Тук в коментарите хората казват, че това е причина за отхвърляне в процеса на преглед. - person werediver; 15.06.2016
comment
Използвахме това успешно, за да се свържем с Wi-Fi настройките и бяхме приети в App Store два пъти. За съжаление вече не работи с iOS 10 Beta 1. - person Jamie McDaniel; 23.06.2016

Исках да отворя Bluetooth менюто в приложението за настройки и горният път (prefs:root=General&path=Bluetooth) не работи за мен. Това, което в крайна сметка работи за мен, беше

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

Уверете се, че първо сте дефинирали prefs URL схемата.

person Mahesh    schedule 23.07.2015
comment
Това е така, защото Bluetooth менюто е преместено в последните версии на iOS. Вече е настройка от най-високо ниво, а не под Общи. - person Nate; 19.01.2016
comment
@Imran: Забравил си prefs-нещата. - person Michael Dorner; 04.02.2016

Решение за iOS10. Работи добре.

NSURL *URL = [NSURL URLWithString:@"App-prefs:root=TWITTER"];
[[UIApplication sharedApplication] openURL:URL options:@{} completionHandler:nil];
person pararmswar Developers    schedule 10.02.2017
comment
Това законно ли е? Успешното изпращане на приложение не означава, че то е законно. В крайна сметка може да се провали в бъдеще. - person Stas; 23.03.2017
comment
@Stas : Не, не е, тъй като е частен API. - person Tejas K; 25.07.2018

От iOS10 можете да използвате

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

за да отворите общи настройки.

също така можете да добавите известни URL адреси (можете да ги видите в най-гласувания отговор) към него, за да отворите конкретни настройки. Например този по-долу отваря touchID и парола.

UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
person mkeremkeskin    schedule 06.02.2017
comment
App-Prefs:root=TOUCHID_PASSCODE не работи на iOS 11. Някакво друго решение? - person myaug; 07.11.2017
comment
App-Prefs е частен API, който ще доведе до отхвърляне на приложението по време на преглед. - person Tejas K; 25.07.2018

Ето още нещо, което намерих:

  1. След като дефинирам URL схемата „prefs“, „prefs:root=Safari&path=ContentBlockers“ работи на симулатора (iOS 9.1 английски), но не работи на симулатора < strong>(опростен китайски). Прескача само към Safari, но не и към Content Blockers. Ако приложението ви е международно, бъдете внимателни.
    Актуализация: Не знам защо, вече не мога да влизам в ContentBlockers, същият код, същата версия не работи сега. :(

  2. На реални устройства (моят е iPhone 6S и iPad mini 2), „Safari“ трябва да бъде „SAFARI“, „Safari“ не работи на реално устройство, „SAFARI“ вече работи на симулатор:

    #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. Досега не са открити разлики между iPhone и iPad.

person Kaiyuan Xu    schedule 24.11.2015
comment
Случвало ли ви се е да работите отново? Жалко, ако не! - person Ryan Brodie; 29.12.2015
comment
@RyanBrodie Какво имаш предвид под такъв срам? - person Kaiyuan Xu; 29.12.2015
comment
Това е много жалко, би било чудесно да се свържете директно към настройките на Safari за блокиране на съдържание - person Ryan Brodie; 29.12.2015
comment
@RyanBrodie Дори и да работи, предлагам да не го използвате за App Store Apps в момента, току-що получих отказ от iTunes Connect тази сутрин, за prefs:root е частен API (има приложения, използващи prefs:root в App Store ... Бог знае защо) - person Kaiyuan Xu; 29.12.2015
comment
Не разбрах, че благодаря много за вниманието! - person Ryan Brodie; 29.12.2015

Работи добре за настройките за известия за приложения на IOS 10 (тествано)

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

iOS 10

Използвайте app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

Вижте същност

person Alex Hedley    schedule 08.10.2017

Актуализирам една новина тук. Използването само на „prefs:“ НЕ се отхвърля от Apple, тествах го и проверих за одобрение в магазина за приложения (през август 2016 г.). Мерси.

person KoreanXcodeWorker    schedule 05.08.2016
comment
използвам този [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=DO_NOT_DISTURB"]]; за отворена DND настройка на устройството. Apple ще отхвърли ли това? - person Shreyank; 09.09.2016
comment
Дали беше минал само преглед или също работи? Имам предвид дали openURL ви отвежда до настройките? Не проработи от моя страна. - person Ahmet Akkök; 24.11.2016