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

在我的应用程序的一个点上,我想将用户redirect到官方设置应用程序。 如果可能,我也想直接进入“ 设置”应用程序中的 networking”部分。

我想我需要的是设置应用程序的urlscheme和格式来构build我的请求。 但我怀疑是否禁止调用这样的官方应用程序。

任何人都可以帮助我吗?

正如下面的评论所指出的,这在iOS 5.1及以后版本中已经不再可能了。

如果您使用iOS 5.0,则适用以下情况:

这现在可以在iOS 5中使用'prefs:'urlscheme。 它可以从网页或应用程序中运行。

示例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,但是您必须在Xcode的URLtypes中添加一个URLscheme:

在这里输入图像描述

那么你可以使用

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

现在可以打开系统WiFi设置。

其他path请在此答案中find: iOS启动设置 – >限制URLscheme 。

坏消息:正如@Hlung和@jasongregori所build议的那样,对于操作系统版本> = iOS 5.1 && <iOS 8.0的 iDevices,再次没有官方/文档方式从第三方应用程序调用内置设置应用程序。 期。

从其他应用程序调用设置应用程序是可能的只有从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开始,您可以redirect

 [[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中添加了URLscheme

应用目标中的信息标签。

对于iOS 10,您可以使用:

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

它也在iOS 9上工作!