从iPhone上的应用程序调用官方*设置*应用程序

时间:2010-12-21 06:36:01

标签: iphone objective-c settings url-scheme

在我的应用中,我想将用户重定向到官方设置应用。如果可能,我还想直接进入设置应用程序中的网络部分。

我认为我需要的是设置应用程序的网址方案以及构建我的请求的格式。但我怀疑是否禁止这样的官方应用程序。

任何人都可以帮助我吗?

9 个答案:

答案 0 :(得分:44)

如下面的评论中所述,iOS 5.1及以后版本已不再适用。

如果您使用的是iOS 5.0,则适用以下条件:

现在可以在iOS 5中使用'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"]]

答案 1 :(得分:35)

在IOS 8中,您可以使用以下方式在应用内调用设置:

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

答案 2 :(得分:17)

它也适用于iOS版本> 5.1,但您必须在Xcode中的URL类型中添加URL方案:

enter image description here

然后你可以使用

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

可以打开系统WiFi设置  现在

其他路径请在此答案中找到:iOS Launching Settings -> Restrictions URL Scheme

答案 3 :(得分:15)

坏消息:正如@Hlung和@jasongregori建议的那样,对于操作系统版本> = iOS 5.1&&amp ;;的iDevices < iOS 8.0 ,再一次 NO 正式/记录的方式从第三方应用程序调用内置的设置应用程序。周期。

答案 4 :(得分:13)

只能从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]];
 }
}

答案 5 :(得分:5)

从iOS 8开始,您可以使用

重定向
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];

享受编码

答案 6 :(得分:0)

只需添加一个解决iOS8 +的附加答案。如果您支持低于8的任何内容,则应检查是否支持

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

答案 7 :(得分:0)

对于iOS 9中的设置,这对我有用。

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

但请确保在

中的网址类型中添加网址方案

应用目标中的信息标签。

答案 8 :(得分:0)

对于iOS 10,您可以使用:

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

它也适用于iOS 9!