Mac OS上命令行程序中的位置服务

时间:2012-08-30 11:44:58

标签: objective-c macos cllocationmanager launchd

我写了一个简单的程序,它使用Cocoa位置服务来获取用户的当前位置。它在MacBook Pro上没有问题。但是,它不适用于MacBook Air。

我留下了Operation could not be completed. (kCLErrorDomain error 1.)代码,而且我已经尝试过多次修复它(例如设置权限)。勾选隐私设置中的应用程序复选框以启用应用程序的位置服务后,它会在我启动应用程序后立即消失。

要初始化服务,我使用CLLocationManager类的startUpdatingLocation方法。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

答案是微不足道的 - 我忘了设置由/ Library / LaunchDaemons /中的plist文件运行的可执行文件的权限。一个简单的chmod 007解决了这个问题。

答案 1 :(得分:1)

kCLErrorDomain error 1表示您被拒绝访问位置服务。最有可能的是,他们已被禁用。见disabling location services。如果您转到系统偏好设置 - >安全 - >隐私,您可以选中启用位置服务框。此外,类方法authorizationStatus返回您对位置服务的当前访问的状态。它的状态定义为以下枚举:

typedef enum {
   kCLAuthorizationStatusNotDetermined = 0, //user hasn't allowed/denied
   kCLAuthorizationStatusRestricted, //app level restriction, cannot be lifted by user
   kCLAuthorizationStatusDenied, //explicit user denial, or disabled in settings
   kCLAuthorizationStatusAuthorized //self explanitory
} CLAuthorizationStatus;

希望以某种方式帮助你。除了那个我唯一的建议,因为我自己没有使用过位置服务,你是否阅读了文档并希望找到有用的东西。