我已经实现了一个在后台运行的NSURLSession (因此它可以使用系统deamon继续执行任务,即使应用程序被挂起)。问题是
-(void)URLSession:(NSURLSession *)session
dataTask:(NSURLSessionDataTask *)dataTask
didReceiveResponse:(NSURLResponse *)response
completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler从来没有被召唤过。我需要知道响应状态,这样我才能正确处理上传失败。另一篇文章称,一位苹果工程师告诉我们,当会话是backgroundSession时,不会调用此委托方法,以防止应用程序被唤醒。对于如何解决这个问题,有什么建议吗?在我的情况下调用的最后一个URLSession委托方法是:
-(void)URLSession:(NSURLSession *)session
dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data发布于 2014-03-18 18:26:27
上传完成后,应该调用NSURLSessionTaskDelegate的NSURLSessionTaskDelegate方法。请参考task.response对象,它应该是NSHTTPURLResponse对象。
我确信您正在这样做,但是标准的后台上载任务组件是:
NSURLSession方法uploadTaskWithRequest:fromFile:方法:
NSURLSessionTask *Task=会话上载uploadTaskWithRequest:请求文件:fileURL;任务恢复;
在后台会话中,您必须:- Use `NSURLSessionUploadTask`;
- Use file-based rendition (you cannot use `NSData` based version);
- Use delegate-based rendition cannot use data tasks; (b) `NSData` rendition of the `NSURLSessionUploadTask`; nor (c) a completion block rendition of the `NSURLSessionUploadTask`.
setHTTPBody的NSMutableRequest。对于上载任务,请求的主体不能在请求本身中。NSURLSessionDelegate,NSURLSessionTaskDelegate方法。application:handleEventsForBackgroundURLSession: (这样您就可以捕获completionHandler,您将在URLSessionDidFinishEventsForBackgroundURLSession中调用它)。https://stackoverflow.com/questions/22487336
复制相似问题