我希望从在 iOS 7 后台运行的应用程序向我的服务器发送一些数据(位置坐标)。为此我使用 NSURLSessions。
我对为此目的应该使用的 session 类型感到困惑:
默认 session :我们可以在后台创建和使用默认 session 吗?如果是,它可以优雅地处理网络故障。
后台 session :我可以使用后台 session 将数据上传为 NSData 对象吗?
PS:在这两种情况下处理网络故障的一些代码将非常受欢迎。
最佳答案
我建议您使用后台 session 。
您可以使用 默认 session 或常规 NSURLConnection 以及最多 10 分钟的后台到期标识符来完成您的任务
后台任务标识 rune 档
https://developer.apple.com/library/ios/DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html#//apple_ref/occ/instm/UIApplication/beginBackgroundTaskWithExpirationHandler :
在后台任务中使用 NSURLConnection(你也得到 iOS 6 支持)
NSURLConnection best practise when enter background
根据新标准,您可以使用 后台 session 来处理下载/服务器上传。
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
希望这对你有帮助!
关于ios7 - 当应用程序在 iOS 7 后台运行时将数据发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20858714/