NSUrlConnection不通过后台获取调用

时间:2015-10-19 12:55:05

标签: ios background nsurlconnection fetch

 -(void)application:(UIApplication )application performFetchWithCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{

 NSLog(@"In performFetchWithCompletionHandler");
 DownloadAlerts alertDownload = [[DownloadAlerts alloc]init]; 
[alertDownload getAlertsOnLocUpdate]; 
completionHandler(UIBackgroundFetchResultNewData); // We will add content here soon. 
}

[NSURLConnection sendAsynchronousRequest:request
                                       queue:[[NSOperationQueue alloc] init]
                           completionHandler:^(NSURLResponse *response,
                                               NSData *data,
                                               NSError *error) {

                               if ([data length] >0 && error == nil) {
                                   NSLog(@"Hello01");

                               } else if ([data length] == 0 && error == nil) {
                                   NSLog(@"Hello02");

                               } else if (error != nil) {
                                   NSLog(@"Hello03");
                               }
                           }];

我正在通过performFetchWithCompletionHandler中的appdelegate.h调用的函数中执行上面的代码。 当我通过后台获取启动应用程序时,3个if块中没有一个被执行。我该如何实现?我需要通过后台提取下载数据。请帮助...... NSUrlSession也不起作用..

2 个答案:

答案 0 :(得分:1)

您是否尝试过发送同步请求?我认为你的performFetchWithCompletionHandler方法在NSURLConnection收到响应之前完成。顺便问一下,你确定调用了performFetchWithCompletionHandler吗?也许你需要为它设置能力?

答案 1 :(得分:0)

需要调用" completionHandler(UIBackgroundFetchResultNewData);"收到数据后,将其传递给" getAlertsOnLocUpdate"方法作为参数,并在从服务器收到答案后调用它(在URLConnection的completionHandler中)