好吧,我知道关于它有很多问题,但它们都是很久以前的事了。

所以。我知道这是可能的,因为地图应用程序做到了。

在地图应用程序中,如果我关闭这个应用程序的本地化,它会给我发送一条消息,如果我按ok,“设置应用程序”就会打开。 我的问题是,这怎么可能呢? 如何从我自己的应用程序打开“设置应用程序”?

基本上我需要做同样的事情,如果用户关闭了我的应用程序的位置,那么我就会给他显示一条信息,上面写着将打开“设置应用程序”


当前回答

你可以在iOS 5.0及更高版本上使用这个:这个不再有效。

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

其他回答

正如Karan Dua提到的,这现在可以在iOS8中使用UIApplicationOpenSettingsURLString,参见苹果的文档。

例子:

斯威夫特4.2

UIApplication.shared.open(URL(string: UIApplication.openSettingsURLString)!)

在Swift 3中:

UIApplication.shared.open(URL(string:UIApplicationOpenSettingsURLString)!)

在Swift 2中:

UIApplication.sharedApplication().openURL(NSURL(string:UIApplicationOpenSettingsURLString)!)

在objective - c中

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

iOS 8之前:

你不能。正如你所说,这已经被报道了很多次,弹出窗口要求你打开位置服务是由苹果公司提供的,而不是由应用程序本身。这就是为什么它能够打开设置应用程序。

以下是一些相关的问题和文章:

是否可以使用openURL打开设置应用程序?

以编程方式打开设置应用程序(iPhone)

当用户按下按钮时,如何打开设置应用程序?

iPhone:从应用程序打开应用程序首选项面板

通过单击应用程序首选项中的一个条目打开UIPickerView -如何?

打开设置应用程序?

iOS:你的设置是错误的

UIApplicationOpenSettingsURLString这只会在你之前允许任何权限的情况下起作用。例如位置,照片,联系人,推送通知访问。因此,如果您没有用户的此类权限:

如果是iOS 10或以上版本,

它会打开设置,但随后会崩溃。原因是,你的应用设置里什么都没有。

下面的代码将在iOS设置中打开你的应用程序设置。

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url];
}

由于设备不可用,我无法在iOS < 10上检查这一点。

此外,我可以从一些要点中找到下面的代码,它在iOS 10上也能正常工作。但我不确定这是否会得到苹果审查团队的批准。

https://gist.github.com/johnny77221/bcaa5384a242b64bfd0b8a715f48e69f

是的! !你可以启动设备设置界面,我已经在iOS 9.2上测试过了

步骤1。我们需要添加URL方案

去项目设置——>信息——> URL类型——>添加新的URL方案

步骤2。通过编程启动设置感谢@davidcann

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs://"]];

此外,我们还可以通过使用适当的名称来启动音乐、位置等子屏幕

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

请看亨利·诺马克分享的完整名单


更新:

根据评论,每个人都想知道我的申请提交状态改变后会发生什么?

是的! !我获得了成功的更新提交和应用程序可在商店没有任何抱怨。

确认一下, 我今天早上刚下载并禁用了位置服务,然后启动了应用程序,它要求我获得位置权限,然后我的警报弹出在那里发送给我设置->位置服务页面->启用->就是这样!!

(注意:! 你的应用可能会被拒绝……如果你使用这种方法,即使它被批准了,在将来的版本中也可能会被拒绝

在iOS 10上测试。工作

NSArray* urlStrings = @[@"prefs:root=WIFI", @"App-Prefs:root=WIFI"];
for(NSString* urlString in urlStrings){
NSURL* url = [NSURL URLWithString:urlString];
if([[UIApplication sharedApplication] canOpenURL:url]){
    [[UIApplication sharedApplication] openURL:url];
    break;
}
}

快乐编码:)

斯威夫特3:

guard let url = URL(string: UIApplicationOpenSettingsURLString) else {return}
if #available(iOS 10.0, *) {
  UIApplication.shared.open(url, options: [:], completionHandler: nil)
} else {
  // Fallback on earlier versions
  UIApplication.shared.openURL(url)
}