【问题标题】:CoreLocation issue on High SierraHigh Sierra 上的 CoreLocation 问题
【发布时间】:2018-05-08 08:54:50
【问题描述】:

我有一个命令行工具,它在根上下文中运行(在 macOS 中)。这使用 CoreLocation 来确定设备的位置。在 High Sierra 中(在 root 上下文中)启动此过程时,不会出现请求用户许可的提示。此外,该过程未在系统偏好设置 -> 隐私窗格中列出。请注意,命令行实用程序已签名。但是,当在用户上下文中运行相同的 util 时,它会按预期工作。

另外,我尝试手动编辑clients.plist。当我将进程添加到 plist 时,它会在系统首选项中列出。但是,不会调用 CoreLocation 委托。我在日志中看到以下错误:“注册计时器已过期,但客户端仍在注册”

苹果是否阻止了根进程收集位置数据?

P.S:代码在objective C中

【问题讨论】:

    标签: objective-c macos core-location macos-high-sierra


    【解决方案1】:

    以 root 身份运行 Objective-c 代码通常是不安全的,由于语言的动态特性,代码注入非常容易。

    位置访问权限是用户给的,root没有登录账号,所以无法出现提示。您要么必须启用 root 登录(但见上文),要么在用户空间中运行代码的位置部分并与系统守护进程通信。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-10
      • 2018-05-03
      • 2018-03-18
      • 2019-02-01
      • 2018-12-02
      • 1970-01-01
      • 2018-05-06
      • 2018-10-23
      相关资源
      最近更新 更多