High Sierra上的CoreLocation问题

时间:2017-11-24 10:47:54

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

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

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

Apple是否阻止根进程收集位置数据?

P.S:代码在目标C

1 个答案:

答案 0 :(得分:0)

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

位置访问权限由用户授予,root用户没有登录帐户,因此不会出现提示。您要么必须启用root登录(但请参见上文),要么在用户空间中运行代码的位置部分并与系统守护程序进行通信。