2014-11-28 2 views
0

Я пытаюсь запустить NSURLSessionDataTask в своем делетете приложения в фоновом режиме, но, хотя я получаю достоверные данные от обработчика завершения, приложение не запускает этот метод. Вот мой кодNSURLSessionDataTask в делетете приложения

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { 

    NSURLSession *serverConfigure = [NSURLSessionConfiguration defaultSessionConfiguration]; 
    NSURLSessionConfiguration *serverSession = [NSURLSession sessionWithConfiguration:serverConfigure delegate:self delegateQueue:nil]; 

    NSURLSessionDataTask *serverDownload = [serverSession dataTaskWithURL:[NSURL URLWithString:@"myurl"] completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) { 
     NSArray *downloadedData = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; 

     [self handleData:downloadedData]; 

    }]; 

    [serverDownload resume]; 

} 
+1

Ваш обработчик завершения не будет работать в основном потоке (где вам нужно будет обновлять пользовательские интерфейсы.) –

+0

Спасибо за ваш ответ, но у меня есть попробовал поместить метод в 'dispatch_async (dispatch_get_main_queue()', но все равно нет ответа –

+0

Возможно, нам понадобится немного разъяснений. Когда вы говорите, что вы получаете достоверные данные от обработчика завершения, какой из двух обработчиков завершения вы говорите? И когда вы говорите: «приложение не запускает метод», о каком методе вы говорите? Ваша "handleData"? –

ответ

0

В backgroundFetch ваше приложение будет вызывать этот метод в фоновом режиме - (Недействительными) применение: (UIApplication *) применение performFetchWithCompletionHandler: (аннулируются (^) (UIBackgroundFetchResult)) completionHandler {

для этого вам нужно активировать режим фоновой выборки ... просто пройдите по этой ссылке http://www.appcoda.com/ios7-background-fetch-programming/

+0

Спасибо за ваш ответ. Фоновая выборка - это работа с методом, вызываемым им самим, когда я нажимаю тихое уведомление и, таким образом, запускает NSURLSession и возвращает данные в отладчике. Проблема в том, что он не вызывает метод «[self handleData: loadedData]»; –

+1

Когда вы получите уведомление .... нажав на уведомление, ур «приложение действительно получило удаленное уведомление ..» метод вызовет ... Проверьте ur download Data task с помощью метода url ... в этой проверке. Верните ли вы блок завершения. ..по завершение (данные, ответ, ошибка); это решит проблему u r – Bevan