打开位置设置在iOS 11中不起作用

时间:2018-03-26 08:07:05

标签: ios objective-c location-services

我使用此代码重定向到该位置的iOS设置:

NSURL *url = [NSURL URLWithString:@"App-Prefs:root=LOCATION_SERVICES"];

if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL:url options:@{} completionHandler:nil];
}

但它只是重定向到设置而不是位置或蓝牙设置。有人知道是否有任何方法可以重定向到iOS位置设置?

谢谢

3 个答案:

答案 0 :(得分:2)

url声明为:

NSURL *url = [NSURL URLWithString:@"App-Prefs:root=LOCATION_SERVICES"];

因此:

if ([[UIApplication sharedApplication] canOpenURL:url]) {
    [[UIApplication sharedApplication] openURL: url];
}

注意:

上述方法适用于iOS 10.x及更低版本(您可以查看:How to programmatically open the WIFI settings in Objective-C on iOS 10)。但是,Apple支持“app-prefs”URL方案! prefs URL被视为私有API,唯一记录的首选URL是UIApplicationOpenSettingsURLString。显然,与使用的编程语言无关;相关:

粗略地说,你无法在iOS 11上进行这样的导航。

答案 1 :(得分:0)

您可以使用UIApplicationOpenSettingsURLString。如果您的应用程序使用位置数据或蓝牙,您将在那里看到位置和蓝牙设置。

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

答案 2 :(得分:0)

首先:点击项目名称>>目标>>信息>>网址类型>>网址方案。 例如,您可以看到屏幕截图。 enter image description here

然后使用代码:

-(IBAction)openSettingViewToEnableLocationService:(id)sender
{
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"prefs:root=LOCATION_SERVICES"]];
}