如何在 OS X Today 扩展中使用 CLLocationManager?

How do I use CLLocationManager in an OS X Today Extension?

我试图在 Today Extension 中获取用户的位置,但我遇到了死胡同。

在 OS X 应用程序上,当您调用 locationManager.startUpdatingLocation() 时,会弹出一个对话框,询问您是否要让该应用程序使用您的位置。但是,在“今天”视图中,调用此方法后什么也没有出现,我的委托也没有被调用 didUpdateLocationsdidFailWithErrorCLLocationManager.authorizationStatus() returns NotDetermined。我一直在查看有关 Today Extensions 的 Apple 文档,但没有看到太多关于权限或获取用户位置的信息。

我们打算如何在 OS X Today 扩展中获取用户的位置?

编辑:需要注意的一件事是 CLLocationManager.locationServicesEnabled() returns true 在我的 OS X 应用程序上,false 在我的 Today Extension 上。这是什么意思,我该如何更改?

OS X Today Extensions 默认使用 App Sandbox,您需要选中正确的框以允许 Today Extension 执行诸如获取用户位置和进行网络调用等操作。

转到项目设置 Xcode,select OS X Today Extension 目标,单击 Capabilities 选项卡,展开 App Sandbox 部分,然后选中所需功能的复选框(在我的例子中,位置和传出网络连接)。