我得到这样的用户GPS位置:

var manager:CLLocationManager!

override func viewDidLoad() {
    super.viewDidLoad()

    manager = CLLocationManager()
    manager.delegate = self
    manager.desiredAccuracy = kCLLocationAccuracyBest
    manager.startUpdatingLocation()
    //manager.requestAlwaysAuthorization()
    //manager.requestWhenInUseAuthorization()

}

func locationManager(manager:CLLocationManager, didUpdateLocations locations:    [AnyObject]) { // Updated to current array syntax [AnyObject] rather than  AnyObject[]
    println("locations = \(locations)")
}


对于os x应用程序似乎不存在已注释掉的功能。它仍然对我有用,所以很好。

但是每次我运行代码时,它都会请求使用位置的许可。
是否可以将许可权存储在某处,因此仅在首次执行时询问?

最佳答案

引用苹果的documentation


  调用authorizationStatus类方法以获取您的应用程序的当前授权状态。
  
  如果授权状态为kCLAuthorizationStatusRestrictedkCLAuthorizationStatusDenied,则不允许您的应用使用位置服务,因此您应中止使用它们的尝试。


您在OS X上的代码应如下所示:

override func viewDidLoad() {
    super.viewDidLoad()

    let status = CLLocationManager.authorizationStatus()
    if status == .Restricted || status == .Denied {
        // User permission not given
        return
    }

    manager = CLLocationManager()
    manager.delegate = self
    manager.desiredAccuracy = kCLLocationAccuracyBest
    manager.startUpdatingLocation()
}


权限由Mac OS X集中管理。第一次调用startUpdatingLocation时,它将询问权限,然后记住用户的决定。

关于swift - OS X保存位置权限,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36034851/

10-14 22:27
查看更多