1

我想在我的应用程序的后台运行一个进程,获取用户当前的纬度/经度(每隔 5 分钟)并通过 Web 服务调用将其报告回我们的服务器。当我将所需的背景模式添加到我的 info.plist 时,我有以下选项:

-App plays audio

-App registers for location updates

-App provides Voice over IP services

现在在我的情况下,我显然需要列表中的第二个选择,但是一旦我有了位置,我能用它做什么?我可以在后台进行网络服务调用吗?可能还有什么其他限制?

非常感谢!

4

1 回答 1

6

当您的应用程序处于后台模式时,您无法以通常的方式建立 HTTP 连接。您必须设置一个后台任务,将位置更新发送到您的服务器。

我找到了一个简短的教程,它涵盖了您正在寻找的内容(我没有测试过代码)。

这是它如何工作的摘要
当您的应用程序在后台运行并且发生位置更改时,iOS 会唤醒您的应用程序并调用locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation您的 CLLocationManager 的委托方法。发生这种情况时,请检查您的应用程序是否在后台运行,如果是则设置后台任务。然后后台任务应该将数据发送到您的服务器。

限制

  • 文档不清楚这样的后台任务可能需要多长时间才能完成,但我稍微记得最多大约 10 分钟。

  • 据我所知,当您的应用程序在后台运行时,您无法更新 UI

于 2012-09-28T17:39:08.447 回答