什么时候NSURLSession运行?
我有一种情况,当设备收到一个推送通知,我会发送一个NSURLSession
与一个NSURLConnection
结合。 我有几个有关NSURLSession
的问题。
如果互联网连接丢失, NSURLSession's
数据任务是否NSURLSession's
在后台自动恢复?
NSURLSession
自动尝试完成任务,如果最初没有互联网,或会话刚刚返回一个错误?
看起来好像是由你来处理重试。
当任何任务完成时,NSURLSession对象会调用委托的URLSession:task:didCompleteWithError:方法,如果任务成功完成,则返回nil。 如果任务是可恢复的下载任务,则NSError对象的userInfo字典将包含NSURLSessionDownloadTaskResumeData项的值。 您的应用程序应使用可达性API来确定何时重试,然后应调用downloadTaskWithResumeData:或downloadTaskWithResumeData:completionHandler:创build新的下载任务以继续下载。 转到步骤3(创build和恢复任务对象)。
如果互联网连接丢失,NSURLSession的数据任务是否会在后台自动恢复?
如果互联网连接丢失,您将在委托方法URLSession:task:didCompleteWithError
收到错误NSURLErrorNetworkConnectionLost
(错误代码:-1005)。 您负责使用invalidateAndCancel或finishAndInvalidate重试和/或使会话失效(即使在networking连接丢失的情况下,它也已经完成)。
NSURLSession会自动尝试完成任务,如果最初没有互联网,或会话只是返回一个错误?
如果没有Internet连接,则在委托方法URLSession:task:didCompleteWithError
中将收到错误NSURLErrorNotConnectedToInternet
(错误代码:-1009)。 你有责任使用invalidateAndCancel或finishAndInvalidate(如果需要的话)使会话失效(它将在没有互联网连接的情况下完成)。
参考文献:
URL加载系统编程指南
基金会常量参考
如果您在NSURLSession中使用后台configuration,那么当您的应用程序处于活动状态或在后台时,代表会在成功/失败时被调用。 你创build的任务被交给操作系统的恶魔,你的应用程序被唤醒,甚至开始(如果它被iOS杀死)
`application:handleEventsForBackgroundURLSession:completionHandler`:
当所有的任务完成你的会议代表将被调用
URLSessionDidFinishEventsForBackgroundURLSession:
背景会议的更多细节在这里
你也可以在这里得到苹果示例代码,并寻找“简单的后台传输”