У меня есть приложение voip, которое также постоянно работает в фоновом режиме.
Пока я в фоновом режиме, я звоню из основного потока: (чтобы установить сетевое соединение в случае, если я диагностирую потерянную сеть).
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];
Однако селектор выполняется только тогда, когда мое приложение возвращается на передний план.
Должен ли я что-то сделать, чтобы селектор выполнялся в фоновом режиме?
Спасибо
Edit:
-(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
Нашел решение. Смотри ниже