Как мы можем программно перейти непосредственно к любому из указанных ниже экранов приложения настроек iOS?
Программно откройте экран настроек клавиатуры в приложении настроек iOS из другого приложения.
Ответы (3)
ОБНОВЛЕНИЕ
Как отметили другие пользователи, это решение больше не работает с iOS10. Если у кого-то есть идея, как заставить его работать в iOS10, сообщите нам.
Решение для iOS ‹ 10:
Чтобы открыть настройки (вашего собственного приложения), вы можете использовать константу UIApplicationOpenSettingsURLString
:
if let settingsURL = NSURL(string: UIApplicationOpenSettingsURLString) {
UIApplication.sharedApplication().openURL(settingsURL)
}
Это было представлено в iOS 8, поэтому вы можете использовать его на устройствах с iOS 8 или более поздней версии. Но это только открывает настройки вашего собственного приложения. Не настройки клавиатуры. И если ваше приложение не имеет собственных настроек, оно открывает только приложение «Настройки» на своей главной странице.
В старые времена (до iOS 5.1) вы могли открыть URL-адрес настроек и напрямую перейти практически на любую подстраницу в приложении «Настройки». Apple удалила эту функцию в iOS 5.1.
Однако, похоже, он снова работает в iOS 8 и 9. Это официально не задокументировано Apple, но, похоже, работает, хотя я не уверен, насколько это надежно. Он работает на моем iPhone с iOS 9.1, но не в Симуляторе.
Итак, с осторожностью вы можете попробовать это, чтобы открыть настройки клавиатуры:
if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard") {
UIApplication.sharedApplication().openURL(settingsURL)
}
Или еще глубже:
if let settingsURL = NSURL(string: "prefs:root=General&path=Keyboard/KEYBOARDS") {
UIApplication.sharedApplication().openURL(settingsURL)
}
Редактировать. Как упоминалось в комментариях iHulk, вам, возможно, придется добавить prefs
к схемам URL-адресов в файле Info.plist вашего проекта, чтобы это заработало.
prefs
в LSApplicationQueriesSchemes
в info.plist, но все равно не работает.
- person kelin; 05.04.2016
prefs
в URL Schemes
из Item 0
в URL types
- person dimpiax; 10.06.2016
Начиная с iOS 10 следует использовать «App-Prefs: root», а не «prefs: root». См. ниже код цели C. Протестировано, код работает нормально, но Apple может отклонить приложение из-за этого.
Примечание. Как уже отмечалось, это будет работать только на iOS 10.
NSString *settingsUrl= @"App-Prefs:root=General&path=Keyboard";
if ([[UIApplication sharedApplication] respondsToSelector:@selector(openURL:options:completionHandler:)]) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:settingsUrl] options:@{} completionHandler:^(BOOL success) {
NSLog(@"URL opened");
}];
}
Последнее сообщение, которое я получил от обозревателей Apple: в вашем приложении размещены расширения, но они не соответствуют Руководству по программированию расширений приложений.
В частности, ваше приложение перенаправляет пользователей непосредственно на страницу настроек клавиатуры, а не на конкретную страницу настроек вашего приложения. Пожалуйста, убедитесь, что ваше приложение приводит пользователей только на страницу настроек вашего приложения.
Когда я перенаправлял на: prefs:root=General&path=Keyboard/KEYBOARDS