6

我希望从在 iOS 7 后台运行的应用程序向我的服务器发送一些数据(位置坐标)。我为此目的使用 NSURLSessions。
我对我应该为此目的使用的会话类型感到困惑:
默认会话:我们可以在后台创建和使用默认会话吗?如果是,它可以优雅地处理网络故障。
后台会话:我可以使用后台会话将数据作为 NSData 对象上传吗?

PS:在这两种情况下处理网络故障的一些代码将非常感激。

4

1 回答 1

7

我建议您使用后台会话。

您可以使用默认会话或带有后台到期标识符的常规 NSURLConnection最多 10 分钟来完成您的任务

后台任务标识符文档

https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/beginBackgroundTaskWithExpirationHandler

在后台任务中使用 NSURLConnection(您还可以获得 iOS 6 支持)

进入后台时的 NSURLConnection 最佳实践

根据新标准,您可以使用后台会话来处理下载/服务器上传。

Apple 关于处理后台下载的文档

https://developer.apple.com/library/ios/documentation/cocoa/Conceptual/URLLoadingSystem/Articles/UsingNSURLSession.html#//apple_ref/doc/uid/TP40013509-SW1

Apple 的一个简单项目说明了该技术

https://developer.apple.com/library/ios/samplecode/SimpleBackgroundTransfer/Listings/SimpleBackgroundTransfer_APLViewController_m.html#//apple_ref/doc/uid/DTS40013416-SimpleBackgroundTransfer_APLViewController_m-DontLinkElementID_7

希望这对你有帮助!

于 2014-01-01T13:28:59.357 回答