macOS - 我在提示时拒绝了位置服务,现在弹出窗口不再显示

时间:2017-06-15 19:58:14

标签: macos swift3 macos-sierra

我正在使用Swift 3在XCode上开发一个macOS应用程序,我正在获取用户的位置。当应用程序第一次加载时,它会显示一个提示,要求用户访问其位置。它自从我制作应用程序以来一直在工作,但我随后更改了项目的名称,当我重新运行应用程序时再次显示弹出窗口时,我点击“取消”进行测试,现在当我尝试获取用户的位置再次,弹出窗口不显示要求许可。

我检查了系统偏好设置 - >安全与安全隐私 - >隐私,我的应用程序不在那里重新启用位置服务。

有什么想法吗?

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

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

1 个答案:

答案 0 :(得分:0)

如果应用程序无法找到您的位置,则表示您未授予应用程序使用您所在位置的权限(显然)。按照以下说明重置它以再次请求您的许可。

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

  2.   
  3. 转到位置/       $ cd /var/db/locationd

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

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

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

  10.   
  11. 将clients.plist转换回二进制文件       $ plutil -convert binary1 clients.plist

  12.   
  13. 重新启动定位       $ killall locationd

  14.