11

我想发出这个警报:

Turn On Location Services to allow maps to determine your location

我需要“设置”和“取消”,就像“地图”应用程序一样。

“设置”应该打开设置->常规->位置服务

我没有找到打开设置页面的方法。

你能帮助我吗?

谢谢

4

7 回答 7

14

Creating the alert is pretty straightforward, it's just a (faux-)modal UIView.

However, it's not possible to open the Settings app programmatically, at least not without using private methods that will prevent your app from being approved for the App Store.

于 2010-12-03T02:13:01.943 回答
6

这是您自己无法完成的。但是,如果您的应用程序需要访问位置服务,操作系统将为您显示如下所示的对话框。

编辑:布兰特在下面提到“可以通过在 CLLocationManager 上设置目的属性的值来自定义消息。”

替代文字

于 2010-12-09T07:47:14.840 回答
6

您无法打开常规、位置等特定设置页面,但您可以在 iOS 8 中打开设置页面。

  - (void)openSettings
  {
      BOOL canOpenSettings = (&UIApplicationOpenSettingsURLString != NULL);
      if (canOpenSettings)
      {
          NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];
          [[UIApplication sharedApplication] openURL:url];
      }
  }
于 2015-05-11T11:15:33.160 回答
3

斯威夫特 2.0 版本:

func showLocationSettingAlert() {
    let alertController = UIAlertController(
        title:  "Location Access Disabled",
        message: "Location settings",
        preferredStyle: .Alert)

    let cancelAction = UIAlertAction(title: "Cancel", style: .Cancel, handler: nil)
    alertController.addAction(cancelAction)

    let openAction = UIAlertAction(title: "Open Settings", style: .Default) { (action) in
        if let url = NSURL(string:UIApplicationOpenSettingsURLString) {
            UIApplication.sharedApplication().openURL(url)
        }
    }
    alertController.addAction(openAction)
    self.presentViewController(alertController, animated: true, completion: nil)
}
于 2015-11-15T19:07:14.173 回答
2

目前无法以编程方式打开设置窗格。参考这里

于 2010-12-03T02:23:17.550 回答
2

这不是你添加的东西。当应用程序想要使用定位服务但在设置中将其关闭时,会出现该屏幕。

推送通知也会发生同样的事情。

于 2010-12-08T11:42:54.060 回答
1

其他人怎么说,如果您想在 App Store 上使用您的应用程序,则无法以编程方式打开设置应用程序。
如果应用程序支持并使用确定的功能(如位置服务),则此弹出窗口会在您的应用程序启动时自动“生成”。
您可以在参考库中找到有关此服务的更多信息:https ://developer.apple.com/library/ios/navigation/#section=Frameworks&topic=CoreLocation

于 2010-12-09T15:46:10.257 回答