PerformSelector After delay не работает в фоновом режиме - iPhone

​​У меня есть приложение voip, которое также постоянно работает в фоновом режиме. Пока я нахожусь в фоновом режиме, я звоню из основного потока: (чтобы установить сетевое соединение на случай, если я диагностирую потерю сети) .

[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];

Однако селектор выполняется только тогда, когда мое приложение возвращается на передний план. Должен ли я делать что-то конкретное, чтобы селектор запускался в фоновом режиме?

Спасибо

Изменить:

-(void) reconectInBackgroundAfterDelay:(NSTimeInterval) dealy
{
    NSLog(@"reconectInBackgroundAfterDelay");
    UIApplication*   app = [UIApplication sharedApplication];

    bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    }];

    // Start the long-running task and return immediately.
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{

        [self performSelector :@selector(Reconnect:) withObject:nil afterDelay:dealy];

        [app endBackgroundTask:bgTask];
        bgTask = UIBackgroundTaskInvalid;
    });
}

Я добавил этот код вместо этого, но все же метод «Reconnect» не вызывается после заданной задержки. Я вызываю метод «reconectInBackgroundAfterDelay», когда я уже нахожусь в задний план.

Есть другие предложения?

Редактировать 2 Нашли решение. См. Ниже

10
задан Idan 10 October 2011 в 14:13
поделиться