5

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

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

为了初始化服务,我使用startUpdatingLocationCLLocationManager 类的方法。

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

4

2 回答 2

2

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

于 2012-09-07T20:01:21.540 回答
1

kCLErrorDomain 错误 1​​表示您已被拒绝访问位置服务。最有可能的是,它们已被禁用。请参阅禁用定位服务。如果您转到系统偏好设置 -> 安全 -> 隐私,有一个启用位置服务框,您可以勾选。此外,类方法 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;

希望能以某种方式帮助你。除此之外,我唯一的建议是,因为我自己没有使用过定位服务,所以你通读文档并希望能找到有用的东西。

于 2012-09-01T22:05:34.300 回答