-(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
也不起作用..
答案 0 :(得分:1)
您是否尝试过发送同步请求?我认为你的performFetchWithCompletionHandler方法在NSURLConnection收到响应之前完成。顺便问一下,你确定调用了performFetchWithCompletionHandler吗?也许你需要为它设置能力?
答案 1 :(得分:0)
需要调用" completionHandler(UIBackgroundFetchResultNewData);"收到数据后,将其传递给" getAlertsOnLocUpdate"方法作为参数,并在从服务器收到答案后调用它(在URLConnection的completionHandler中)