2013-12-13 13 views
7

Ich möchte wissen, wann meine App suspendiert wird? Der Status für eine bestimmte Zeit nicht aktiv zu sein oder vom Benutzer beendet zu werden. Ich brauche das, weil ich eine Verbindung einen Web-Socket schließen muss. Ich möchte die Verbindung aufrechterhalten, während die App im Hintergrundzustand ist.iOS: Wie kann ich feststellen, wann eine App angehalten wird?

Wie mache ich das?

Dank

EDIT: Dies ist ein nicht eine doppelte Frage, die anderen Fragen wollen, sind etwa, wenn der App nicht mehr aktiv ist, würde Ich mag die App wissen, wird beendet.

+2

@ dandan78 das ist nur für den Hintergrund, ich möchte eine Benachrichtigung für wann die App ausgesetzt ist. –

Antwort

-1

In Ihrer AppDelegate.m Datei wird diese Methode aufgerufen, wenn der Benutzer die Home-Taste drückt und die App in den Hintergrund geht (hier können Sie Ihre Verbindung live halten, aber Sie sollten die Apple Dokumentation zu Hintergrundaufgaben lesen, weil die Verbindung nicht für immer lebt sein kann, wenn die App im Hintergrund bleibt Es gibt auch andere Möglichkeiten, um Ihre App auf dem neuesten Stand wie Update auf Push-Benachrichtigung etc.) zu halten.

- (void)applicationWillResignActive:(UIApplication *)application 
{ 
    // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 
    // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. 
} 

und diese Methode, wenn die Anwendung aufgerufen wird wird beendet (vollständig vom Multitasking geschlossen).

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. 
} 

Sie können Ihre Verbindungen innerhalb dieser Methoden behandeln.

+0

in Ordnung, danke das funktioniert. Ich habe es versucht und es funktioniert super! –

+9

"Suspend" ist nicht "Hintergrund". – Almo

+0

Kann ich nur klären, da ich etwas verwirrt bin, wird applicationWillTerminate aufgerufen, wenn die App lange im Hintergrund ist und iOS die App abstürzt? Ich habe eine App, die nach 10+ Minuten im Hintergrund neu gestartet wird, wenn Sie vom Hintergrund zurückgehen. –

3

Sie können auch Mitteilung Beobachter

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(receiveSuspendNotification:) 
              name:UIApplicationWillResignActiveNotification 
              object:nil]; 

- (void) receiveSuspendNotification:(NSNotification*)notif 
{ 
} 

Methode erhalten genannt hinzufügen und Sie können die erforderlichen Aufgaben ausführen.

+0

Warum fügen Sie dem Benachrichtigungscenter einen Benachrichtigungsbeobachter hinzu, wenn Sie die Methoden in 'NikosM. answer 'verwenden können. Scheint ein wenig überflüssig, einen weiteren Anruf hinzuzufügen, nicht wahr? – Popeye

+1

Ich empfinde Benachrichtigungen als sauberer Ansatz, wenn Sie etwas anderes als den App-Delegierten tun. – zekel

+0

http://StackOverflow.com/users/980097/Popeye, weil es nicht funktioniert. Ab 2017 wird dies angezeigt, wenn die App in den Hintergrund tritt, aber nicht, wenn sie einige Minuten * nachdem * im Hintergrund angehalten wurde. –

-2

Wenn Ihre App im Hintergrund nicht registriert wurde, wird Ihre App beim Empfang der UIApplicationDidEnterBackgroundNotification im RAM angehalten.