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

6
我编写了一个简单的程序,使用Cocoa位置服务获取用户当前位置。在MacBook Pro上可以正常工作,但在MacBook Air上却无法正常运行。我收到了一个“操作无法完成(kCLErrorDomain error 1.)”的错误代码,并且已经尝试了许多方法来解决它(例如设置权限)。在隐私设置中勾选应用程序的复选框以启用应用程序的位置服务后,该复选框会在我启动应用程序后立即消失。
为了初始化服务,我使用CLLocationManager类的startUpdatingLocation方法。有没有办法解决这个问题?

本地化和位置服务是两个不同的概念。我猜你指的是后者。 - JeremyP
我明白了,谢谢您的纠正。 - az4dan
CoreLocation在OS X上需要WiFi。 MacBook Air是否连接到WiFi网络? - Felix
是的,不幸的是它已经关闭了。 - az4dan
2个回答

2

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;

希望这能在某种程度上对你有所帮助。除此之外,我的唯一建议是,由于我自己没有使用位置服务,所以你可以阅读文档,希望能找到一些有用的信息。


2
答案很简单 - 我忘记在 /Library/LaunchDaemons/ 中的 plist 文件运行可执行文件时设置权限。一个简单的 chmod 007 可以解决这个问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接