Настройки запуска iOS -> Схема URL ограничений
Недавно я обнаружил потрясающую пользовательскую схему URL-адресов настроек iOS5, которую можно подробно объяснить на этом замечательном веб-сайте.
Я нашел, что это работает, направляя пользователя к приложению Настройки из моего приложения:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General"]];
Но, кажется, не может направить непосредственно к пути ограничений через path
параметр:
[[UIApplication sharedApplication] openURL:
[NSURL URLWithString:@"prefs:root=General&path=Restrictions"]];
Кто-нибудь нашел документацию по этому или смог сделать эту работу?
Любое понимание будет с благодарностью. Я пытаюсь заставить пользователя включить встроенные покупки, и я бы не хотел, чтобы пользователь вручную нажимал на Ограничения (не очень очевидно).
14 ответов
КАК @Nix Ван отвечает, что это не работает в IOS 10
ВНИМАНИЕ: Этот метод не будет работать на устройствах под управлением iOS 5.1 и выше - см. Комментарий Hlung ниже.
Возможно, что path
имя компонента отличается от фактического раздела, но также возможно, что в данный момент вы не можете получить доступ к этому разделу прямо из URL. Я нашел список возможных URL-адресов и ограничений нет, может быть, он просто еще не обнаружен.
Список известных на данный момент URL-адресов в приложении "Настройки":
- префы: корень = Общие и путь = О
- префы: корень = Общие и путь = ДОСТУПНОСТИ
- префы: корень =AIRPLANE_MODE
- префы: корень = Общие и путь =AUTOLOCK
- префы: корень = Общие и путь =USAGE/CELLULAR_USAGE
- префы: корень = Яркость
- префы: корень = Общие и путь =Bluetooth
- префы: корень = Общие и путь =DATE_AND_TIME
- префы: корень =FaceTime
- префы: корень = Общие
- префы: корень = General & путь =Keyboard
- префы: корень = ЗАМОК
- префы: корень = ЗАМОК & путь =STORAGE_AND_BACKUP
- префы: корень = General & путь = INTERNATIONAL
- Prefs: корень =LOCATION_SERVICES
- Prefs: корень =ACCOUNT_SETTINGS
- префы: корень = МУЗЫКА
- префы: корень = МУЗЫКА & путь =EQ
- префы: корень = МУЗЫКА & путь =VolumeLimit
- префы: корень = Общие и путь = Сеть
- префы: корень =NIKE_PLUS_IPOD
- Prefs: корневые = ПРИМЕЧАНИЯ
- префы: корень = NOTIFICATIONS_ID
- префы: корень = Телефон
- Prefs: корневые = Фотографии
- префы: корень = Общие и путь =ManagedConfigurationList
- префы: корень = Общие и путь = Сброс
- префы: корень = Звуки & путь = Мелодия
- префы: корень = Safari
- префы: корень = General & путь = помощник
- Prefs: корень = Звуки
- префы: корень = Общие и путь =SOFTWARE_UPDATE_LINK
- префы: корень = STORE
- префы: корень =TWITTER
- префы: корень = Общие и путь = ИСПОЛЬЗОВАНИЕ
- префы: корень = ВИДЕО
- префы: корень = Общие и путь = Сеть /VPN
- префы: корень = обои
- префы: корень =WIFI
- префы: корень =INTERNET_TETHERING
Начиная с iOS8 вы можете открыть встроенное приложение "Настройки" с помощью:
NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
[[UIApplication sharedApplication] openURL:url];
}
Фактическая строка URL @"app-settings:"
, Я попытался добавить в строку различные разделы ("Bluetooth", "ОБЩИЕ" и т. Д.), Но, похоже, работает только ссылка на главный экран настроек. Оставьте ответ, если узнаете иначе.
Если вы добавите схему URL prefs в свое приложение для iOS, это позволит вам использовать все те схемы, которые мы могли использовать в iOS 5. Я протестировал ее на iOS 9, но думаю, что она будет работать и на более старых версиях.
Да, видел это (и многое другое), даже реализовал это в тестовом приложении. Действительно нужно получить определенное слово от Apple, но общее мнение сообщества заключается в том, что Apple запретила его в 5.1 после того, как он был публично "обнаружен / опубликован", поэтому приложения, содержащие его, не будут приняты.
01.08.12 Обновление: спросил у Apple через мою учетную запись разработчика, есть ли способ программно запустить диалог настроек WiFi. Вот ответ:
"Наши инженеры рассмотрели ваш запрос и пришли к выводу, что не существует поддерживаемого способа достижения желаемой функциональности с учетом текущих настроек системы".
В iOS 9 это снова работает!
Чтобы открыть Настройки> Общие> Клавиатура, я использую:
prefs:root=General&path=Keyboard
Более того, к клавиатурам можно пойти еще дальше:
prefs:root=General&path=Keyboard/KEYBOARDS
Я хотел открыть меню Bluetooth в приложении настроек, и вышеуказанный путь (prefs: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 (вы можете увидеть их в наиболее часто задаваемом ответе), чтобы открыть определенные настройки. Например, ниже открывается TouchID и пароль.
UIApplication.sharedApplication().openURL(NSURL(string:"App-Prefs:root=TOUCHID_PASSCODE")!)
В iOS16/Swift 5 для перехода к определенному поднабору, например, настройкам батареи:
if let url = URL(string: "App-prefs:BATTERY_USAGE") {
UIApplication.shared.open(url) { accepted in
print(accepted ? "Success" : "Failure")
}
}
Работает нормально для настроек уведомлений приложения на IOS 10 (проверено)
if(&UIApplicationOpenSettingsURLString != nil){
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
Вот что-то еще, что я нашел:
После того, как у меня определена схема URL "prefs", "prefs: root = Safari & path = ContentBlockers" работает на Simulator (iOS 9.1 на английском языке), но не работает на Simulator (упрощенный китайский). Это просто переход на Safari, но не блокировщики контента. Если ваше приложение является международным, будьте осторожны.
Обновление: не знаю почему, теперь я не могу больше переходить на ContentBlockers, тот же код, та же версия, теперь не работает.:(На реальных девайсах (у меня 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.
Я обновляю одну новость здесь. Использование 'prefs:' only НЕ отклоняется Apple, я протестировал его и проверил одобрено в магазине приложений (в августе 2016 года). Спасибо.