Xcode命令行工具项目是否允许CoreLocation权限?

时间:2011-12-27 13:37:34

标签: xcode command-line permissions core-location

我有一个用C ++编写的Xcode'命令行工具'项目。我最近添加了CoreLocation框架和相关代码来查找用户位置。

通常,当我实现CoreLocation框架时,OS X会要求我授予该应用程序的权限。我的命令行工具不会发生这种情况。是因为没有相关的窗口/菜单吗?

此外,如果我尝试在安全>下的系统偏好设置窗格中手动启用权限每次运行应用程序时,隐私都会自动被禁用 - 即使我明确允许访问。

非常感谢任何信息。

3 个答案:

答案 0 :(得分:2)

Mac OS下的某些内容需要连接到窗口服务器。一个例子是NSImage,可能是位置服务也需要这样的连接。

但是,我不知道如何在不调用NSApplicationMain的情况下进行此类连接。

您可以做的是编写一个未显示在停靠栏中的辅助应用程序(如状态栏应用程序),但调用NSApplicationMain。然后,这个应用程序将执行所有位置服务,并通过stdout或套接字或类似的东西与调用进程(您的CLI)进行通信。

答案 1 :(得分:1)

您是否也将Foundation.h导入项目?您应该检查以查看CoreLocation所具有的所有依赖项,并确保它们已将其添加到您的项目中。 CoreLocation也是用Objective-C编写的,因此c ++编译器可能无法捕获一些调用。

答案 2 :(得分:0)

当CoreLocation询问位置数据时,Mac会提示一个消息框询问用户是否给予权限,如果您选中“不要再问我”并单击“确定”,那么它将永远不会再次提示该消息,除非您“ “安全首选项”窗格下的“重置警告”,但如果将命令行应用程序移动到另一个目录,则Mac将再次请求权限。我相信此权限存储在应用程序的完整路径中。