多个 Long-运行 后台任务

Multiple Long-Running Background Tasks

我正在开发一个应用程序,我必须在其中执行至少两个后台任务。场景变成这样,我有一个 Web 服务,它告诉我何时开始为用户更新位置。因此,我需要定期调用此服务来检查是否是时候开始、and/or 停止用户的位置跟踪。 所以有两个后台任务,fetch 和 location tracking。 Fetch 应该 运行 定期执行,这违背了 Apple 的程序,即它将监视您的应用程序的使用情况并自行决定何时更新内容。这已成为我的第一个问题,有什么办法可以避免这种情况?第二个问题来自多个任务,我如何在其中一个之间切换? 这里的最佳做法是什么?该做什么和不该做什么?

您应该通过 Apple 的推送服务器使用推送通知,否则您可能会发现 Parse.com 这样的服务更容易使用。您可以使用推送通知在您的应用委托(您处理接收推送通知的地方)中触发或创建任何内容。正如 @Paulw11 的评论所述,您甚至可以将有效负载(数据)附加到推送通知并进行处理。因此,第一部分是在用户应该开始跟踪和结束跟踪时向用户的设备发送通知。

大多数使用 CLLocationManager 实例的位置跟踪内容都可以通过它的委托方法完成。但是,如果您愿意,可以在 NSOperation 的子 class 中使用它并在 NSOperationQueue 中管理它,请参阅此处的教程:

http://www.raywenderlich.com/76341/use-nsoperation-nsoperationqueue-swift

我建议研究 class 文档。