iOS背景限制是否允许http?

问题描述:

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

-App plays audio

-App registers for location updates

-App provides Voice over IP services

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

非常感谢!

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

我发现了一个短小的tutorial,它涵盖了你正在寻找的东西(我没有测试过这个代码)。

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

限制

  • documentation尚不清楚多少时间在这样的背景任务可能需要完成,但我稍微记得是什么周围最多10分钟。

  • 据我所知,而你的应用程序在 后台运行

+0

谢谢你不能更新UI! GPS必须无限期地工作吗?如果是这样,多少电池会吃掉? – PaulG

+0

你可以选择只监视重要的位置变化(通常在用户从一个单元塔切换到另一个单元时发生),这对电池寿命更好,或者你可以使用标准的位置服务,它将保持GPS开启,会消耗更多的电池。你应该选择什么完全取决于你制作的应用类型。如果您构建导航应用程序,则需要尽可能提供最准确的准确度,如果您正在构建“附近的兴趣点”,则重大的位置更改应该没问题。 –