【问题标题】:How do I set CoreLocation usage description for macOS?如何为 macOS 设置 CoreLocation 使用说明?
【发布时间】:2018-04-11 04:20:06
【问题描述】:

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

NSLocationUsageDescription
NSLocationAlwaysUsageDescription
NSLocationWhenInUseUsageDescription
NSLocationAlwaysAndWhenInUseUsageDescription

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

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

    var locationManager = CLLocationManager()

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

这是警报的屏幕截图:

Calendar.app 可以自定义提醒:

【问题讨论】:

  • 您看到警报了吗?有什么讯息?您是否偶然丢失了对 locationManager 的引用?
  • 是的,警报按预期显示。只是没有使用说明字符串。它说“‘app’想要访问你的位置。” locationManager 设置在班级级别,所以我认为这不会丢失。

标签: macos core-location info.plist location-services


【解决方案1】:

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

【讨论】:

  • 我向 Apple DTS 询问了这个问题。他们建议您可以通过终端命令 tccutil reset CoreLocationAgent 绕过缓存,然后重新启动计算机
猜你喜欢
  • 2018-06-11
  • 1970-01-01
  • 2015-11-20
  • 2013-10-18
  • 2017-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多