ios 9




Beenden Sie die Anwendung in iOS 4.0 (6)

Du kannst immer exit(1) benutzen. Dies ist ein roher / erzwungener Exit mit einer Ganzzahl für einen Code / Grund. Sie können dies während der Entwicklung verwenden, wie im Simulationsmodus, wenn Sie nur beenden möchten; wie in JETZT.

Bevor iOS4.0 durch Klicken auf die Home-Taste auf dem iPhone die Anwendung beendet, hatte Apple in seinem Handbuch das programmatische Beenden der Anwendung nicht akzeptiert.

jetzt hat sich alles in iOS4.0 geändert, wenn du auf die Home-Taste klickst, wird deine App in einen gesperrten Modus versetzt (Multitasking) ... und ich denke, es sollte eine klare Möglichkeit für den Benutzer geben, die App zu verlassen, wie eine Exit-Taste.

Ist es jetzt OK mit Apfel? und wie kann es gemacht werden?


Du solltest das nicht tun. Wenn der Benutzer die App beenden möchte, drückt er die HOME-Taste.

Wenn der Benutzer die Home-Taste drückt, erhalten Sie eine UIApplicationWillResignActiveNotification Benachrichtigung. Verwenden Sie diese Benachrichtigung, um alle Ihre Ressourcen abzubauen.

Grundsätzlich sollte Ihre App "in einer Ecke verstecken" (verbrauchen so wenig Speicher wie möglich), wenn der Benutzer die Home-Taste drückt. Es gibt jedoch einen Kompromiss, denn je mehr Sie abbauen, desto länger dauert es, bis die App erneut angezeigt wird, wenn der Benutzer zurückwechselt (Sie müssen alle Ressourcen neu laden).


Ich hatte ein echtes Problem damit. Es gibt einen großen Punkt beim manuellen oder pragmatischen Beenden.

Bei früheren iPhone-Betriebssystemen schrieb meine App den Status (Erstbenutzung oder Zweites Mal usw.) in einem Programm ab, als sie beendet wurde. Wenn der Benutzer zurückkam, wollte er verschiedene Dinge zeigen, indem er den Plist las. Außerdem sollte der erste Bildschirm jedes Mal angezeigt werden, wenn der Benutzer nach dem Beenden zurückkam.

Da die App mit dem iPhone OS4 im Hintergrund deaktiviert wird, kommt die App dorthin zurück, wo sie aufgehört hat (dh sie zeigt den gleichen Bildschirm an, wo auch immer der Benutzer war) und ändert ihren Status nie, weil applicationWillTerminate jetzt nie aufgerufen wird.

Da dies das meistgewünschte Verhalten ist (um fortfahren zu können, wenn Sie vorübergehend aus der App aussteigen), muss es einen Weg geben, wählen zu können, dh es auszusetzen oder zu beenden.

Da das Setzen von UIApplicationExitsOnSuspend = YES nur eine Möglichkeit bietet (dh es wird immer beendet, wenn HOME gedrückt wird), ist dies keine Lösung, nach der ich suche.

Ich möchte, dass die App weiß, dass die ganze Kette von Schritten abgeschlossen ist, im Gegensatz dazu, dass nur die Sequenz unterbrochen wurde, und dass sie sich zur richtigen Zeit beendet.

Um dies zu tun, muss ich in der Lage sein, die App zu beenden und den Status zu schreiben, sobald die Nutzung die gesamte Sequenz abgeschlossen hat. In anderen Fällen möchte ich nur, dass die App gesperrt wird.

Wenn Sie zweimal auf die Schaltfläche HOME tippen, können Sie die gesperrten Apps sehen. Ich kann meine App löschen, indem ich sie länger berühre und das Symbol (-), das angezeigt wird, berühre. Dies ist jedoch nicht so intuitiv für die Benutzer und zu viele Schritte.

Eine andere Option ist eine Schaltfläche "Beenden" als eine Nav-Tabs in meiner App, aber das ist hässlich. Im Moment scheint meine einzige Option zu sein, den UIApplicationExitsOnSuspend = YES zu setzen.


Mit diesem privaten Befehl können Sie eine Anwendung programmatisch in den Hintergrund stellen:

(Ihre App wird jedoch abgelehnt, wenn Sie sie verwenden.)

[[UIApplication sharedApplication] suspend];

Sie können den Info.plist-Schlüssel UIApplicationExitsOnSuspend festlegen, um sicherzustellen, dass die App vollständig beendet wird.


Siehe auch iOS Debugging Magic (Technische Anmerkung TN2239) :

Beachten Sie, dass der Lebenszyklus der iOS-Anwendung unter der Kontrolle des Benutzers liegt. Das bedeutet, dass iOS-Anwendungen nicht einfach beendet werden sollten. Ihr Release-Build sollte den Abbruch nur in Fällen auslösen, in denen er ohnehin abgestürzt wäre, und der Abbruch-Aufruf verhindert die Beschädigung von Benutzerdaten oder ermöglicht eine einfachere Diagnose des Problems.

Während der Frage nach der Ursache für einen vorzeitigen Ausstieg könnte es von Interesse sein, iPhone OS Application Crash-Berichte (Technical Note TN2151) zu verstehen und zu analysieren .

Entschuldigung dafür, dass ich ein wenig Thema gemacht habe, aber es bezieht sich auf frühe Ausgänge und Diagnose.

Jeff





ios4