当app在后台时,我可以将用户的当前位置发送到服务器吗?

时间:2014-02-02 14:57:21

标签: ios iphone ios7 core-location

当app在后台时,我可以将用户的当前位置发送到服务器吗? 例如:在我的应用程序中,我想每隔2分钟存储用户的当前位置,然后将其当前位置发送到服务器。我可以在应用程序处于后台时执行此操作吗? 我可以在后台模式下向服务器发送位置更新吗?

3 个答案:

答案 0 :(得分:6)

你可以从iOS7开始。你基本上需要要求两种背景状态:位置和提取  在您的应用程序中,您将注册gps位置更改,并在每次调用回调时存储它们。然后你会注册:

 application:performFetchWithCompletionHandler:

这通常用于在后台下载文件,但您可以使用它将数据发布到网络服务器。请注意,您无法控制此通话的频率 要对此进行测试,您可以在Xcode Debug菜单中强制在iOS模拟器中进行提取操作 我能够以这种方式成功跟踪用户位置。 您可以在Apple doc中找到更多信息,然后您会找到有关后台提取的教程here

答案 1 :(得分:1)

我写了一个开源项目,定期从ios设备获取位置(还有android,windows phone和java me手机)。它在后台运行良好。我还编写了服务器软件来存储位置并使用谷歌地图显示路线。该项目完整且有效,并获得麻省理工学院的许可。它完全符合您的要求:

https://github.com/nickfox/GpsTracker

请务必查看phoneClients目录中的ios,了解我如何定期获取该位置。 ios客户端项目还使用AFNetworking,它可以轻松地允许应用程序使用后台任务从后台向Web服务器发布更新。

答案 2 :(得分:0)

在这里很好地涵盖了它:https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/LocationAwarenessPG/RegionMonitoring/RegionMonitoring.html#//apple_ref/doc/uid/TP40009497-CH9-SW1

根据授权,您可以在划分区域时唤醒您的应用。而不是每两分钟检查一次,当你跨越区域时,通常是首选。这节省了电池,因为它允许应用程序在大多数时间处于睡眠状态。

此外,似乎有点:How to wake up an app

不是我的发展领域,只是谷歌搜索。