2013-03-14 16 views
6

Ich muss jedes Mal wissen, wenn der Benutzer die Anwendung verwendet.Ermitteln des Anwendungsneufokusereignisses

Fall 1 (OK): Die App wurde nicht gestartet.

Der Benutzer startet die Anwendung von Grund auf neu.

Ich füge einen Listener in den Bootstrap der App, und ich weiß, wann es startet.

Fall 2 (TODO): Die App gestartet wurde, aber es ist nicht mehr aktiv

Der Benutzer kann die Anwendung aus der Taskleiste neu zu laden.

Ich möchte wissen, wenn die Anwendung von der Taskleiste in den Vordergrund kommt (wie ein Alt + Tab).

Das ist schwierig zu fangen, weil die App noch läuft und ich weiß nicht, welches Ereignis zu hören ist. Tatsächlich weiß ich nicht einmal, wie ich dieses Verhalten benennen soll.

+0

Warum wird dies als "iPad" bezeichnet? – Dancreek

+0

Da die Anwendung auf einem iPad ausgeführt werden soll, mit Cordova/Sencha Touch-Framework – vaugham

Antwort

4

Ein IOS-App-Entwickler akzeptiert, um mir zu helfen. Seine Antwort passt mir sehr gut, da sie sauber und wiederverwendbar scheint. Also werde ich es hier produzieren:

Das Ereignis "App in den Vordergrund" kann durch die applicationWillEnterForeground Ereignis erfasst werden. Phonegap/Cordova erlaubt Javascript Funktionen über die Cordova Klassen aufzurufen. Das Objekt webView verfügt über eine dedizierte Methode zum Starten von js-Skripten.

Also öffnete ich die Datei Projet/Klassen/Cordova/AppDelegate.m:

- (void)applicationWillEnterForeground:(UIApplication *)application { 
    NSLog(@"applicationWillEnterForeground: %@", self.viewController.webView); 
    [self.viewController.webView stringByEvaluatingJavaScriptFromString:@"notifyForegroundEvent();"]; 

} 

Und ich hinzugefügt, um die notifyForegroundEvent() -Methode irgendwo in der Wurzel meiner js Dateien:

var notifyForegroundEvent = function() { 
    console.log('notifyForegroundEvent()'); 
    // Do something here 
} 

Et voilà

2

Wie ich vor einiger Zeit auf facebook (destkop, nicht mobile) gesehen habe, überprüfen sie Mousemove, um festzustellen, ob empfangene Chat-Nachricht als gelesen markiert werden soll oder nicht. Ich weiß, dass das nicht die Lösung ist, aber es könnte dich in eine gute Richtung weisen. Ich würde auch überprüfen, was mit dem Eingabefokus passiert, wenn Sie zu anderen App wechseln. Vielleicht verschwimmt es.

+0

Schöne Idee, obwohl ich denke, ich werde etwas in Objective-C suchen, wenn die Lösung nicht in Sencha Touch implementiert ist – vaugham

5

Es gibt ein Ereignis für App Lebenslauf und Pause in Cordova, so dass Sie die Cordova-Klassendateien nicht bearbeiten müssen. Unten ist funktionierender Code, den ich momentan in einer App für iOS/Android verwende.

Verwandte Themen