如何为 macOS 设置 CoreLocation 使用说明?

How do I set CoreLocation usage description for macOS?

我正在尝试设置在我的应用程序请求位置授权时显示的字符串。我试过设置所有 four possible keys in Info.plist:

NSLocationUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription

我也试过设置 locationManager.purpose 字符串 which is deprecated in iOS, but not macOS。 None 这些方法会导致字符串在应用程序请求授权时出现在警报中。

我正在使用此代码请求访问权限:

    var locationManager = CLLocationManager()

    func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) {
        switch status {
        case .notDetermined:
            locationManager.startUpdatingLocation()
            locationManager.stopUpdatingLocation()
        default: break
        }
    }

这是警报的屏幕截图:

Calendar.app 可以自定义提醒:

macOS 上正确的位置使用说明似乎是 NSLocationUsageDescription(隐私 - 位置使用说明)。事实证明我设置正确,但 CoreLocation 一定一直在缓存字符串(或缺少字符串)。最终决定使用新字符串可能需要一天时间,因为即使重新启动似乎也没有任何改变。您应该能够通过更改应用程序的捆绑包标识符来绕过缓存来测试新字符串。