handleEventsForBackgroundURLSession永远不会被调用:ios7后台传输服务

时间:2015-01-13 23:00:27

标签: ios7 service background download

我现在花了两天时间,我认为我需要一些帮助。 当然,我试图在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,永远不会!

有人可以帮忙解决这个问题吗?

提前致谢

0 个答案:

没有答案