CLLocationManager 已启用但选中从不

CLLocationManager enabled but checked Never

我正在尝试在 AppDelegate 中确定用户是否将应用程序的位置权限设置为 "Never"。如果无法获取位置信息,我的应用程序总是会崩溃。

我在 AppDelegate 中的代码是:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    //location
    var manager = CLLocationManager()       
    if CLLocationManager.authorizationStatus() == .Restricted
            || .authorizationStatus() == .Denied {
        manager.requestWhenInUseAuthorization()
        manager.requestAlwaysAuthorization()
    }
}

谁能帮我解决这个问题?

有关 CoreLocation 和请求授权的最佳文章在这里:http://nshipster.com/core-location-in-ios-8/

几点:

  1. 仅在当前状态为 .NotDetermined 时请求授权
  2. 如果当前状态为.Denied,那么您可以post发出警报询问 用户进入设置并打开位置服务,但调用任何一种请求方法都不会执行任何操作。
  3. 记得在你的 plist 中加入一个 NSLocationUsageDescription ! (我 经常忘记这个。)