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

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

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

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

Но не может показаться, что он направляется непосредственно к пути Ограничения с помощью параметра path:

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

Кто-нибудь нашел документацию по этому поводу или смог выполнить эту работу?

Любое понимание было бы весьма полезным. Я пытаюсь забрать пользователя для включения покупки в приложении, и не хотел бы, чтобы пользователь вручную нажимал "Ограничения" (не очень очевидно).

Ответ 1

AS @Nix Wang ОТВЕТЬТЕ ЭТО НЕ РАБОТАЕТ В IOS 10


ПРЕДУПРЕЖДЕНИЕ: этот метод не будет работать для устройств под управлением iOS 5.1 и выше - см. комментарий Hlung ниже.

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

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

  • префы: корень = General & путь = О
  • prefs: root = General & path = ACCESSIBILITY
  • префы: корень = AIRPLANE_MODE
  • prefs: root = Общие и путь = AUTOLOCK
  • prefs: root = Общие & путь = ИСПОЛЬЗОВАНИЕ /CELLULAR _USAGE
  • prefs: root = Яркость
  • prefs: root = General & path = Bluetooth
  • префы: корень = General & путь = DATE_AND_TIME
  • prefs: root = FACETIME
  • префы: корень = Общие
  • prefs: root = General & path = Клавиатура
  • префы: корень = ЗАМОК
  • prefs: root = CASTLE & путь = STORAGE_AND_BACKUP
  • prefs: root = General & path = INTERNATIONAL
  • prefs: root = LOCATION_SERVICES
  • префы: корень = ACCOUNT_SETTINGS
  • prefs: root = MUSIC
  • префы: корень = МУЗЫКА & путь = EQ
  • prefs: root = MUSIC & path = VolumeLimit
  • prefs: root = Общие & путь = Сеть
  • prefs: root = NIKE_PLUS_IPOD
  • prefs: root = ПРИМЕЧАНИЯ
  • префы: корень = NOTIFICATIONS_ID
  • префы: корень = Телефон
  • prefs: root = Фотографии
  • prefs: root = General & path = ManagedConfigurationList
  • prefs: root = General & path = Reset
  • prefs: root = Звуки & путь = Мелодия
  • префы: корень = Safari
  • prefs: root = General & path = Assistant
  • префы: корень = Звуки
  • prefs: root = General & path = SOFTWARE_UPDATE_LINK
  • prefs: root = STORE
  • префы: корень = TWITTER
  • префы: корень = General & путь = ИСПОЛЬЗОВАНИЕ
  • prefs: root = VIDEO
  • префы: корень = General & путь = Сеть /VPN
  • prefs: root = Обои
  • префы: корень = WIFI
  • префы: корень = INTERNET_TETHERING

Ответ 2

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

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

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

Ответ 3

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

MNNPS.png

Ответ 4

Update:

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

Ответ 5

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

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

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

Ответ 6

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

Чтобы открыть Настройки > Общие > Клавиатура, я использую:

prefs:root=General&path=Keyboard

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

prefs:root=General&path=Keyboard/KEYBOARDS

Ответ 7

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

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

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

Ответ 8

Решение для iOS10. Прекрасно работает.

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

Ответ 9

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

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

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

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

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

Ответ 10

Вот что я нашел:

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

  • На реальных devcies (мой 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)
    }
    
  • До сих пор не было обнаружено различий между iPhone и iPad.

Ответ 11

iOS 10

Используйте app-prefs:

App-prefs:root=MOBILE_DATA_SETTINGS_ID

См. gist

Ответ 12

Я обновляю одну новость здесь. Использование "prefs:" не отклоняется Apple, я тестировал его и проверял, утвердил его в магазине приложений (в августе 2016 года). ТНХ.

Ответ 13

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

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