我正在获取用户的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应用程序似乎不存在注释掉的函数。它仍然适用于我,所以没关系。
但每次我运行代码时都会要求获得使用位置的权限。 是否可以在某处存储权限,所以它只询问第一次执行?
答案 0 :(得分:1)
引用Apple的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
时,它会请求权限,然后记住用户已决定的内容。