我现在花了两天时间,我认为我需要一些帮助。 当然,我试图在stackOverflow中搜索,但没有解决我的问题。
我的应用正在下载文件(2MB到100MB)。
我正在使用后台传输服务(ios7)
当用户点击按钮时,我按下面的方式启动下载(立即按下主页按钮):
NSURLSessionConfiguration * backgroundConfig = [NSURLSessionConfiguration backgroundSessionConfiguration:self.url];
self.session = [NSURLSession sessionWithConfiguration: backgroundConfig delegate:self delegateQueue: [NSOperationQueue mainQueue]];
self.downloadTask =[ self.session downloadTaskWithURL:url];
[self.downloadTask resume];
我让代表方法运作良好:
- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error {
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite
我也设置了:
- (void)application:(UIApplication *)application handleEventsForBackgroundURLSession:(NSString *)identifier completionHandler:(void (^)())completionHandler {
NSLog(@"<<<<<<<<< Save completionHandler >>>>>>>>>>>>>>");
self.backgroundSessionCompletionHandler = completionHandler;
}
-(void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session
{
NSLog(@"Background URL session %@ finished events.\n", session);
AppDelegate * delegate =(AppDelegate *)[[UIApplication sharedApplication] delegate];
if(delegate.backgroundSessionCompletionHandler)
{
void (^handler)() = delegate.backgroundSessionCompletionHandler;
handler();
}
}
AppDelegate.h中的
我获得了我的块属性:
@property (copy) void (^backgroundSessionCompletionHandler)();
其实我跟着这个tuto:http://code.tutsplus.com/tutorials/ios-7-sdk-background-transfer-service--mobile-20595
我的问题是有时我会下载我的文件,有时候没有。只有文件的一部分存在于文件系统中。
但我永远不会调用handleEventsForBackgroundURLSession,永远不会!
有人可以帮忙解决这个问题吗?
提前致谢