如何在macOS上为CLLocationManager请求auth

时间:2017-07-10 09:37:53

标签: swift macos cllocationmanager

我正在使用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桌面应用程序中使用它?

2 个答案:

答案 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想使用您当前的位置”弹出窗口