Ich habe auch eine VoIP-Anwendung, die ständig im Hintergrund läuft. Während ich im Hintergrund bin, rufe ich vom Hauptthread aus an: (um eine Netzwerkverbindung herzustellen, falls ich einen Netzwerkverlust diagnostiziere).
[self performSelector :@selector(Reconnect:) withObject:nil afterDelay:60.0];
Der Selektor wird jedoch nur ausgeführt, wenn meine App in den Vordergrund zurückkehrt. Sollte ich etwas Bestimmtes tun, damit der Selektor im Hintergrund ausgeführt wird?
Danke
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;
});
}
Ich habe stattdessen diesen Code hinzugefügt, aber die Methode "Reconnect" wird immer noch nicht nach der angegebenen Verzögerung aufgerufen. Ich rufe die Methode "reconectInBackgroundAfterDelay" auf, während ich mich bereits im Hintergrund befinde.
Haben Sie noch andere Vorschläge?
Bearbeiten 2 Ich habe eine Lösung gefunden. Siehe unten