iOS 7+当应用程序处于非活动状态时,应用程序是否可以通过网络发送数据?

时间:2014-08-21 16:24:45

标签: ios rest http background geolocation

iOS 7 +,8(最后一个尚未发布,但针对它)。 该应用程序。 作为用户,我启动应用程序并切换到其他应用程序(邮件,野生动物园等),让应用程序运行但不是前台应用程序。 该应用程序通过Internet建立与服务器的HTTP连接,并开始定期向服务器发送GPS位置数据(有一定的间隔)。

应用程序不在前台时是否可以?我的意思是,在使用其他应用程序时,是否可以获取地理定位数据并定期通过HTTP POST将其从应用程序发送到服务器?

如果答案是"是",请帮助我参考。我会进一步调查。

2 个答案:

答案 0 :(得分:1)

是的,您要研究的方法是performFetchWithCompletionHandler:

  

如果您的应用支持获取后台模式,请实施此方法。   当有机会下载数据时,系统会调用此数据   为您的应用提供下载所需数据的机会的方法。您的   这种方法的实现应该下载数据,做好准备   要使用的数据,并在completionHandler参数中调用该块。

     

调用此方法时,您的应用最长可达30秒   挂钟时间执行下载操作并调用   指定的完成处理程序块在实践中,您的应用应该致电   下载后尽快完成处理程序块   需要的数据。如果你没有及时调用完成处理程序,那么你的   应用已终止。更重要的是,系统使用经过的时间   计算应用程序背景的功耗和数据成本   下载。如果您的应用需要很长时间才能完成调用   处理程序,可能会获得更少的未来获取数据的机会   未来。有关支持后台提取的更多信息   操作,请参阅iOS App Programming中的“App States and Multitasking”   指南。

https://developer.apple.com/library/ios/documentation/uikit/reference/uiapplicationdelegate_protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIApplicationDelegate/application:performFetchWithCompletionHandler

答案 1 :(得分:0)

就像迈克提到的那样,你应该研究后台获取。有关详情,请查看此objc.io post

您需要的信息应该在后台提取部分。