【问题标题】:macOS - I denied location services when prompted, and now the pop up won't show againmacOS - 出现提示时我拒绝了定位服务,现在弹出窗口将不再显示
【发布时间】:2017-11-18 10:44:15
【问题描述】:

我正在使用 Swift 3 在 XCode 上开发一个 macOS 应用程序,并且我正在获取用户的位置。当应用程序第一次加载时,它会显示一个提示,询问用户是否有权访问他们的位置。自从我制作应用程序以来它一直在工作,但是我更改了项目的名称,当我重新运行应用程序时再次显示弹出窗口时,我单击“取消”进行测试,现在当我尝试获取再次定位用户的位置,弹出窗口不会显示请求权限。

我检查了系统偏好设置 -> 安全和隐私 -> 隐私,但我的应用程序无法重新启用定位服务。

有什么想法吗?

下面的代码是我获取用户位置的方法,我在 viewDidLoad() 中调用它:

locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.startUpdatingLocation()

【问题讨论】:

    标签: macos swift3 macos-sierra


    【解决方案1】:

    如果应用无法找到您的位置,则意味着您没有授予应用使用您的位置的权限(显然)。请按照以下说明重置它以再次请求您的许可。

    1. 打开终端并 sudo 到 root shell $ sudo -s

    2. 转到定位/ $ cd /var/db/locationd

    3. 备份clients.plist以防万一 $ cp -p clients.plist clients.plist.save

    4. 将 clients.plist 转换为 XML $ plutil -convert xml1 clients.plist

    5. 打开 clients.plist 并删除包含 Map My Route 应用程序的整个文件,然后保存。

    6. 将clients.plist转换回二进制 $ plutil -convert binary1 clients.plist

    7. 重启定位 $ killall locationd

    【讨论】:

    • 在我重置系统完整性首选项之前无法在 Montery 上使用此功能,请按照此处的说明:imore.com/how-turn-system-integrity-protection-macos 并删除 clients.plist 文件而不是对其进行编辑;跳过第 4-6 步,改用 $ rm clients.plist 并记住之后重新打开 SIP。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-28
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    • 2014-06-19
    相关资源
    最近更新 更多