Ответ 1
Плохая новость: как @Hlung и @jasongregori предложили для iDevices, чья версия ОС >= iOS 5.1 && & & < iOS 8.0, снова появляется NO официальный/документированный способ вызова встроенного приложения настроек из стороннего приложения. Период.
В какой-то момент в моем приложении я хотел бы перенаправить пользователя в официальное приложение настроек. Если возможно, я также хочу перейти прямо в раздел "Сеть" в приложении "Настройки".
Я думаю, что мне нужна схема URL-адресов приложения настроек и формат для создания моего запроса. Но я сомневаюсь, что вызов такого официального приложения запрещен.
Кто-нибудь может мне помочь?
Плохая новость: как @Hlung и @jasongregori предложили для iDevices, чья версия ОС >= iOS 5.1 && & & < iOS 8.0, снова появляется NO официальный/документированный способ вызова встроенного приложения настроек из стороннего приложения. Период.
Как отмечено в комментариях ниже, это уже невозможно в версии 5.1 и после iOS.
Если вы используете iOS 5.0, применяется следующее:
Теперь это возможно в iOS 5 с использованием схемы urf prefs:. Он работает с веб-страницы или из приложения.
Примеры URL:
prefs:root=General
prefs:root=General&path=Network
Использование образца:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General"]]
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=General&path=Network"]]
Из IOS 8 вы можете вызвать настройки из приложения:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
Он также работает в версии iOS > 5.1, но вы должны добавить схемы URL-адресов в типах URL-адресов в Xcode:
Затем вы можете использовать
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=WIFI"]];
Он может открыть системную настройку WiFi Теперь.
В этом ответе найдите другой путь: Настройки запуска iOS → Схема URL-адресов ограничений.
Вызов приложения настроек из другого приложения возможен только с iOS 8. Итак, используйте следующий код
if([CLLocationManager locationServicesEnabled]&&
[CLLocationManager authorizationStatus] != kCLAuthorizationStatusDenied)
{
//...Location service is enabled
}
else
{
if([[[UIDevice currentDevice] systemVersion] floatValue]<8.0)
{
UIAlertView* curr1=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil];
[curr1 show];
}
else
{
UIAlertView* curr2=[[UIAlertView alloc] initWithTitle:@"This app does not have access to Location service" message:@"You can enable access in Settings->Privacy->Location->Location Services" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:@"Settings", nil];
curr2.tag=121;
[curr2 show];
}
}
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (alertView.tag == 121 && buttonIndex == 1)
{
//code for opening settings app in iOS 8
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
}
из iOS 8, вы можете перенаправить с помощью
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
пользоваться кодированием
Просто дополнительный ответ для добавления на адрес iOS8+. Если вы поддерживаете что-либо ниже 8, вы должны проверить, поддерживает ли он
BOOL canGoToSettings = (UIApplicationOpenSettingsURLString != NULL);
if (canGoToSettings)
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}
Для настроек в iOS 9 это работает для меня.
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Settings"]];
Но не забудьте добавить URL-адреса в URL-адресах в
Вкладка "Информация" в целевых приложениях.
Для iOS 10 вы можете использовать:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Settings"]];
Он также работает на iOS 9!