ios - iOS10如何跳转到系统设置位置服务?

标签 ios objective-c xcode

在我问这个问题之前我试过:

  1. 使用 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=Privacy&path=LOCATION"]];它在 iOS8 和 iOS9 上工作正常,但在 iOS10 上没有任何反应.
  2. 使用[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];它在iOS8和iOS9上也能正常工作。但是,在iOS10上,当应用程序跳转到系统设置时,系统设置立即退出。
  3. 使用[[UIApplication sharedApplication]openURL:url options:@{}completionHandler:nil];在iOS8和iOS9上崩溃,在iOS10上立即退出。

问题是我们的app在iOS10上可以跳转到系统设置吗?如果是。如何?对于 [[UIApplication sharedApplication]openURL:url options:@{}completionHandler:nil];options 是什么意思?我们必须为选项?

最佳答案

一段时间以来,应用程序只被允许在设置应用程序中打开自己的设置面板。过去有各种可用的设置 URL,但最近 Apple 拒绝使用这些 URL 的应用。

您可以打开自己的应用程序设置:

if let url = URL(string:UIApplicationOpenSettingsURLString) {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

或者在 Objective-C 中

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if (url != nil) {
    [[UIApplication sharedApplication] openURL:url options:[NSDictionary new] completionHandler:nil];
}

如果您的目标是 iOS 10 之前的版本,那么您可能更愿意使用旧的、已弃用但仍然可用的方法:

NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
if (url != nil) {
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"
    [[UIApplication sharedApplication] openURL:url];
#pragma clang diagnostic pop
}

关于ios - iOS10如何跳转到系统设置位置服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39940219/

相关文章:

objective-c - UIWebView 和缩放图像 - 不一致的结果?

ios - XCode 无法识别 iPad Storyboard

ios - 某些 iPad 设备返回此代码不可用的生物识别信息,为什么?

ios - 使用具有更多可用选项的 UIActivityController 共享

ios - iPhone SDK : what is the difference between loadView and viewDidLoad?

iphone - 当应用程序置于后台时如何关闭警报 View ?

ios - 在 iOS 包中搜索全文的工具

svn - Xcode svn+ssh 自定义端口不工作?

ios - 在谷歌地图上绘制两点之间的路径

ios - 通过函数 prepare for segue 将数据传递给 ViewController 不起作用