Подтвердить что ты не робот

Позвоните в официальное приложение * Настройки * из моего приложения на iPhone.

В какой-то момент в моем приложении я хотел бы перенаправить пользователя в официальное приложение настроек. Если возможно, я также хочу перейти прямо в раздел "Сеть" в приложении "Настройки".

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

Кто-нибудь может мне помочь?

4b9b3361

Ответ 1

Плохая новость: как @Hlung и @jasongregori предложили для iDevices, чья версия ОС >= iOS 5.1 && & & < iOS 8.0, снова появляется NO официальный/документированный способ вызова встроенного приложения настроек из стороннего приложения. Период.

Ответ 2

Как отмечено в комментариях ниже, это уже невозможно в версии 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"]]

Ответ 3

Из IOS 8 вы можете вызвать настройки из приложения:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

Ответ 4

Он также работает в версии iOS > 5.1, но вы должны добавить схемы URL-адресов в типах URL-адресов в Xcode:

enter image description here

Затем вы можете использовать

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

Он может открыть системную настройку WiFi  Теперь.

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

Ответ 5

Вызов приложения настроек из другого приложения возможен только с 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]];
 }
}

Ответ 6

из iOS 8, вы можете перенаправить с помощью

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

пользоваться кодированием

Ответ 7

Просто дополнительный ответ для добавления на адрес iOS8+. Если вы поддерживаете что-либо ниже 8, вы должны проверить, поддерживает ли он

BOOL canGoToSettings = (UIApplicationOpenSettingsURLString != NULL);
if (canGoToSettings)
{
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
}

Ответ 8

Для настроек в iOS 9 это работает для меня.

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

Но не забудьте добавить URL-адреса в URL-адресах в

Вкладка "Информация" в целевых приложениях.

Ответ 9

Для iOS 10 вы можете использовать:

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"App-Prefs:root=Settings"]];

Он также работает на iOS 9!