根据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/

10-12 23:35