如何从设置屏幕打开位置服务屏幕?

时间:2016-06-06 09:40:33

标签: ios objective-c location-services

我想以编程方式打开位置服务屏幕以启用服务。

enter image description here

12 个答案:

答案 0 :(得分:40)

位置服务var string = 'filters=fuelType=D,make=[BMW,CITROEN,DACIA],price=(0,100)'; var result = string.replace(/,\s*(?=[^)^\]]*(?:\(|\[|$))/g, '&'); alert(result); // -> `filters=fuelType=D&make=[BMW,CITROEN,DACIA]&price=(0,100)` 为我工作。当我在设备而不是模拟器上进行测试时。

我不会列出我尝试过的不起作用的东西,这是一个很长的清单。

假定位置服务已禁用或权限被拒绝或未确定的用法示例:

App-Prefs:root=Privacy&path=LOCATION

答案 1 :(得分:11)

您可以直接打开它,就像使用下面的代码一样,

但首先在Info.plist的URL类型中设置URL Schemes

enter image description here

然后在特定事件的下面写一行:

目标 - C

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

Swift

UIApplication.sharedApplication().openURL(NSURL(string: "prefs:root=LOCATION_SERVICES")!)

希望这会对你有所帮助。

答案 2 :(得分:10)

我已经尝试了以上所有答案,但它不适用于iOS11 ..只是打开设置页面而不是应用程序设置..最后这个工作..

xsi:schemaLocation="http://www.springframework.org/schema/beans
^^^^

Swift 4.2:

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

参考:https://developer.apple.com/documentation/uikit/uiapplicationopensettingsurlstring?language=swift

答案 3 :(得分:7)

Swift 4.2

直接进入您的应用程序设置,如下所示。不要忘记输入您的包标识符 -

if let bundleId = Bundle.main.bundleIdentifier,
    let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(bundleId)") 
{
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

答案 4 :(得分:5)

已测试SWIFT 4:

唯一避免被拒绝并打开自己应用的位置首选项的方法是:

if let bundleId = Bundle.main.bundleIdentifier,
   let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(bundleId)") {
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

答案 5 :(得分:3)

首先:

添加网址

转到项目设置 - >信息 - >网址类型 - >添加新的URL方案

见下图:

第二名:

使用以下代码打开位置设置:

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

参考:https://stackoverflow.com/a/35987082/5575752

答案 6 :(得分:2)

第1步:点击项目名称>>目标>> info>>网址类型

enter image description here

第2步:

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

答案 7 :(得分:1)

实际上有更简单的解决方案。它会显示您的应用设置,包括位置服务/相机访问等:

func showUserSettings() {
    guard let urlGeneral = URL(string: UIApplicationOpenSettingsURLString) else {
        return
    }
    UIApplication.shared.open(urlGeneral)
}

答案 8 :(得分:1)

Swift 5+
Easy Way Direct您打开的申请页面将打开

if let BUNDLE_IDENTIFIER = Bundle.main.bundleIdentifier,
    let url = URL(string: "\(UIApplication.openSettingsURLString)&path=LOCATION/\(BUNDLE_IDENTIFIER)") {
    UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

答案 9 :(得分:0)

将prefs添加为url类型后,请使用以下代码直接转到应用程序的位置设置。

if let url = URL(string: "App-prefs:root=LOCATION_SERVICES") {
     UIApplication.shared.open(url, options: [:], completionHandler: nil)
}

答案 10 :(得分:0)

您想安全吗?使用UIApplicationOpenSettingsURLString,它将打开应用设置,不使用深层链接

使用App-prefs的应用将被拒绝,正如许多子评论所说。 https://github.com/mauron85/cordova-plugin-background-geolocation/issues/394

答案 11 :(得分:0)

如果您设置了locationManager.startUpdatingLocation()并在iPhone上将其禁用,它将自动向您显示一个AlertView,其中包含用于打开和激活位置的选项。