У меня есть приложение 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 Нашли решение. См. Ниже