根据docs和所有示例,我正在使用CLLocationManager在swift 3中编写OSX应用程序,我发现以下所有示例都应该很好(这在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
(和requestAlwaysAuthorization
)似乎不适用于OSX。我目前将这些函数调用包装在#if
块中:#if os(macOS)
// can't find way for MacOSX to request auth
#endif
#if os(watchOS) || os(tvOS)
lm.requestWhenInUseAuthorization()
#endif
#if os(iOS)
lm.requestAlwaysAuthorization()
#endif
那么,有谁知道如何使它在macOS桌面应用程序中正常工作?
最佳答案
根据Core Location Best Practices WWDC 2016 session ,
不要忘记为目标打开“应用程序沙箱”功能下的“位置”。另外,在我的测试中,仅在首次运行应用程序时显示提示。
关于swift - 如何在macOS上请求CLLocationManager的身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45008592/