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

Недавно я обнаружил потрясающую схему URL-адресов пользовательских настроек iOS5, которую можно подробно объяснить на этой замечательной странице сайт.

Я обнаружил, что это работает, направляя пользователя в приложение настроек из моего приложения:

[[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 и пароль?   -  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 и выше - см. комментарий Хлунга ниже.

Возможно, что компонент path имеет другое имя, чем фактический раздел, но также возможно, что в настоящее время вы не можете получить доступ к этому разделу прямо с URL-адреса. Я нашел список возможных URL-адресов, и в нем нет ограничений, возможно, он просто еще не выяснен.

Список известных на данный момент URL-адресов в приложении "Настройки":

  • prefs: root = General & path = About
  • префы: корень = Общие & путь = ДОСТУПНОСТЬ
  • префы: root = AIRPLANE_MODE
  • префы: root = General & path = AUTOLOCK
  • префы: root = General & path = USAGE / CELLULAR_USAGE
  • prefs: root = Яркость
  • префы: корень = Общие и путь = Bluetooth
  • префы: root = General & path = DATE_AND_TIME
  • префы: root = FACETIME
  • префы: корень = Общие
  • префы: корень = Общие & путь = Клавиатура
  • префы: корень = ЗАМОК
  • префы: корень = ЗАМОК & путь = STORAGE_AND_BACKUP
  • префы: корень = Общие & путь = МЕЖДУНАРОДНЫЙ
  • префы: root = LOCATION_SERVICES
  • префы: root = ACCOUNT_SETTINGS
  • префы: корень = МУЗЫКА
  • префы: корень = МУЗЫКА & путь = EQ
  • префы: корень = МУЗЫКА & путь = VolumeLimit
  • префы: корень = Общие & путь = Сеть
  • префы: корень = NIKE_PLUS_IPOD
  • префы: корень = ЗАМЕТКИ
  • префы: root = NOTIFICATIONS_ID
  • префы: root = Телефон
  • prefs: root = Фотографии
  • префы: корень = Общие & путь = ManagedConfigurationList
  • префы: корень = Общие и путь = Сброс
  • prefs: root = Звуки и путь = Мелодия
  • префы: корень = Safari
  • prefs: root = General & path = Assistant
  • prefs: root = Звуки
  • префы: root = General & path = SOFTWARE_UPDATE_LINK
  • префы: корень = МАГАЗИН
  • префы: корень = TWITTER
  • префы: корень = Общие & путь = ИСПОЛЬЗОВАНИЕ
  • префы: корень = ВИДЕО
  • префы: корень = Общие & путь = Сеть / VPN
  • prefs: root = Обои
  • префы: корень = WIFI
  • префы: 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-адресах, только о том, как они работают. Этот список составлен с разных сайтов. - 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-адресов prefs. - 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, что приложение перейдет в фоновый режим и откроются настройки, а затем ОК, Отмена и т. Д. - 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. Проверьте схему URL: 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
Работает, если вы измените настройки на 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
Параметры приложения: 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-адресов prefs в свое приложение для 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 вам не разрешено открывать настройки Wi-Fi, например, если вы не добавляете этот позор 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) преднамеренно адресован выпуску prefs и датирован 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 / карты Apple, когда вы отключаете службы определения местоположения в настройках и пытаетесь вызвать функцию навигации в этих приложениях, оба приложения могут открыть службы настроек / определения местоположения даже на iOS 10 :) .. хакеры, или я не знаю (неудивительно в случае приложения Apple, но в случае карт Google ..) - person luky; 16.11.2016
comment
@ Nix Wang, Возможен любой другой метод или альтернатива для prefs: в 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 через мою учетную запись разработчика, есть ли способ программно запустить диалоговое окно «Настройки Wi-Fi». Вот ответ:

«Наши инженеры рассмотрели ваш запрос и пришли к выводу, что не существует поддерживаемого способа достижения желаемой функциональности с учетом текущих конфигураций поставляемой системы».

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-адресов prefs для таргетинга - 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
@ Имран: Ты забыл про 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" работает в Simulator (iOS 9.1 English), но не работает в Simulator < 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 Content Blocker. - person Ryan Brodie; 29.12.2015
comment
@RyanBrodie. Даже если бы это могло сработать, я предлагаю вам не использовать его для приложений App Store прямо сейчас. Сегодня утром я получил отказ от 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

Используйте 1_

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"]]; для открытой настройки устройства «Не беспокоить». Apple отвергнет это? - person Shreyank; 09.09.2016
comment
Прошла только рецензию или тоже работает? Я имею в виду, ведет ли openURL вас к настройкам? С моей стороны это не сработало. - person Ahmet Akkök; 24.11.2016