我得到这样的用户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
类方法以获取您的应用程序的当前授权状态。
如果授权状态为kCLAuthorizationStatusRestricted
或kCLAuthorizationStatusDenied
,则不允许您的应用使用位置服务,因此您应中止使用它们的尝试。
您在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/