我正在使用CLLocationManager在swift 3中编写OSX应用程序,根据docs,我发现以下所有示例都应该没问题(这是一个类{{{} 1}})
CLLocationManagerDelegate
但似乎if CLLocationManager.locationServicesEnabled() {
let lm = CLLocationManager()
lm.requestWhenInUseAuthorization()
lm.delegate = self
lm.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
lm.startUpdatingLocation()
print("should start getting location data")
} else {
print("Location service disabled");
}
(和requestWhenInUseAuthorization
)对OSX不可用。我目前在requestAlwaysAuthorization
块中包含了那些函数调用:
#if
那么有谁知道如何在macOS桌面应用程序中使用它?
答案 0 :(得分:9)
根据Core Location Best Practices WWDC 2016年会议,
对于macOS,我们只支持始终授权。此外,核心 尝试时,位置将自动显示提示 访问位置信息。
您不需要在macOS上调用requestAlwaysAuthorization。
别忘了打开"位置"在" App Sandbox"你的目标的能力。此外,在我的测试中,提示仅在第一次运行应用程序时显示。
答案 1 :(得分:0)
在OSX中触发身份验证请求的步骤
1)与代表一起设置位置管理器
manager = CLLocationManager()
manager.delegate = self
2)实现必需的委托方法(这些被标记为可选,但不是!)
func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
//Do Stuff
}
func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) {
//Error
}
3)请求位置
manager.requestLocation()
仅此而已。现在将显示“ XXX想使用您当前的位置”弹出窗口