настройки запуска iOS - > схема URL ограничений

недавно я обнаружил удивительный iOS5 пользовательские настройки URL Scheme, что можно подробно объяснить на этом великом сайт.

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

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

но, похоже, не может напрямую обращаться к ограничения путь через

13 ответов


AS @Nix Wangответ это не работа в IOS 10


предупреждение: этот метод не будет работать для устройств под управлением iOS 5.1 и выше - см. комментарий Hlung ниже.

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

список известных в настоящее время URL в настройках приложения:

  • префы: root=General&path=About
  • префы: root=общие & path=доступность
  • префы: root=AIRPLANE_MODE
  • префы: root=General&path=AUTOLOCK
  • префы: root=General&path=USAGE / CELLULAR_USAGE
  • префы: root=яркость
  • prefs: root=общие & path=Bluetooth
  • префы: root=General&path=DATE_AND_TIME
  • префы: root=FACETIME
  • префы: root=General
  • префы: root=общие и путь=клавиатура
  • префы: root=замок
  • префы: root=замок и путь=STORAGE_AND_BACKUP
  • префы: root=General&path=INTERNATIONAL
  • префы: root=LOCATION_SERVICES
  • префы: root=ACCOUNT_SETTINGS
  • префы: root=музыка
  • префы: root=музыка и путь=EQ
  • префы: root=музыка и путь=VolumeLimit
  • префы: root=General&path=Network
  • префы: root=NIKE_PLUS_IPOD
  • префы: root=Примечания
  • префы: root=NOTIFICATIONS_ID
  • префы: root=телефон
  • префы: root=фото
  • префы: root=General&path=ManagedConfigurationList
  • prefs: root=общие & путь=сброс
  • префы: root=звуки и путь=рингтон
  • префы: root=Safari
  • префы: root=General&path=Assistant
  • префы: root=звуки
  • префы: root=General&path=SOFTWARE_UPDATE_LINK
  • префы: root=STORE
  • префы: root=TWITTER
  • префы: root=General&path=USAGE
  • префы: root=видео
  • префы: root=общие & path=сеть / VPN
  • префы: root=обои
  • префы: root=WIFI
  • префы: root=INTERNET_TETHERING

начиная с iOS8 вы можете открыть встроенное приложение Настройки с:

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

фактическая строка URL-адреса @"app-settings:". Я попытался добавить различные разделы к строке ("Bluetooth", "общие" и т. д.) но, похоже, работает только ссылка на главный экран настроек. Отправьте ответ, если выясните обратное.


Если вы добавите схему URL префов в свое приложение iOS, это позволит вам использовать все те схемы, которые мы могли бы в iOS 5. Я тестировал его на iOS 9, но я думаю, что он будет работать и на более старых версиях.


обновление:

prefs: не будет работать с iOS 10.


Да, видел это (и многое другое), даже реализовал его в тестовом приложении. Действительно нужно получить окончательное слово от Apple, но мнение сообщества единодушно-Apple запретила его в 5.1 после того, как он был публично "обнаружен/опубликован", поэтому приложения, содержащие его, не будут приняты.

обновление 08/01/12: спросил Apple через мою учетную запись разработчика, если есть способ программно запустить диалоговое окно настроек WiFi. Вот ответ:

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


на iOS 9 он снова работает!

открыть Настройки > Общие > Клавиатура, Я:

prefs:root=General&path=Keyboard

более того, можно пойти дальше к клавиатуры:

prefs:root=General&path=Keyboard/KEYBOARDS

Я хотел открыть меню Bluetooth в приложении настроек, и вышеуказанный путь (префы:root=General&path=Bluetooth) не работал для меня. Что в конечном итоге работает для меня

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

убедитесь, что у вас есть prefs схема URL определена первой.


решение для iOS10. Работать отлично.

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

начиная с iOS10 вы можете использовать

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

открыть общие настройки.

также вы можете добавить известные URL-адреса(их можно увидеть в наиболее upvoted ответ), чтобы открыть настройки. Например, ниже открывается touchID и пароль.

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

вот еще что я нашел:

  1. после того, как я определил схему URL" prefs", "prefs: root=Safari & path=ContentBlockers" работает на симуляторе (iOS 9.1 английский язык), но не работает на тренажере (Упрощенный Китайский). Он просто переходит к Safari, но не блокирует контент. Если ваше приложение является международным, будьте осторожны.
    Update: Не знаю, почему, теперь я больше не могу прыгать в ContentBlockers, тот же код, же версия, не работает сейчас. :(

  2. на реальных devcies (мой iPhone 6S & iPad mini 2), "сафари" должно быть "сафари", "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.


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

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

iOS 10

использовать app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

посмотреть суть


Я обновляю одну новость здесь. Использование "prefs:" только не отклоняется Apple, я протестировал его и проверил, одобрен в app store(в августе 2016 года). тнх.