Ошибка Alamofire: операция не может быть завершена.Программное обеспечение вызвало прерывание соединения - PullRequest
0 голосов
/ 27 февраля 2019

Alamofire выдает ошибку при вызове API и блокировки экрана мобильного устройства или приложения Minimize.

"Операция не может быть завершена. Программное обеспечение вызвало прерывание соединения"

enter image description here

  • Мой API занимает 60 секунд для завершения операции.
  • Это происходит только в iPhone, а нев симуляторах.

Пожалуйста, дайте мне решение этой проблемы.

1 Ответ

0 голосов
/ 07 марта 2019

Я думаю, что iOS 12 закрывает соединение до того, как последний запрос вернет результат, когда приложение перейдет в фоновый режим.Вы можете использовать следующий код для решения вашей проблемы:

if ([UIApplication sharedApplication].applicationState == UIApplicationStateBackground) {
    [self sendBackgroundDataToServer];

}

- (void) sendBackgroundDataToServer {
         UIBackgroundTaskIdentifier bgTask = UIBackgroundTaskInvalid;
         bgTask = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
             [[UIApplication sharedApplication] endBackgroundTask:bgTask];
         }];

         NSMutableDictionary *dictionary = [NSMutableDictionary dictionaryWithCapacity:2];
        [dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.latitude] forKey:@"floLatitude"];
        [dictionary setObject:[NSNumber numberWithDouble:lc.coordinate.longitude] forKey:@"floLongitude"];
        // send to server with a synchronous request


       // AFTER ALL THE UPDATES, close the task
       if (bgTask != UIBackgroundTaskInvalid) {
           [[UIApplication sharedApplication] endBackgroundTask:bgTask];
       }
}
...