2013-03-14 12 views
6

ユーザーがアプリケーションを使用するたびに知っておく必要があります。アプリケーションリフォーカスイベントを検出する

ケース1(OK):アプリが起動していません。

ユーザーは最初からアプリケーションを起動します。

私はアプリケーションのブートストラップにリスナーを追加して、起動時に気づいています。

ケース2(TODO):アプリが開始されましたが、それはもう

ユーザーは、タスクバーからアプリケーションをリロードし、アクティブではありません。

アプリケーションがタスクバーからフォアグラウンド(alt + tabのように)になるタイミングを知りたい。

これは、アプリがまだ実行中で、聞く予定がわからないため、これをキャッチするのは難しいことです。実際に、私はこの動作の名前を付ける方法も知らない。

+0

「iPad」と表示されるのはなぜですか? – Dancreek

+0

アプリケーションがipadで実行されるため、cordova/sencha touchフレームワークで – vaugham

答えて

4

私を助けるために受け入れられたios-app開発者。彼の答えはきれいに再利用できるように私にとてもよく合います。だからここでそれを作ります:

"app come to foreground"イベントは、applicationWillEnterForegroundイベントでキャッチできます。 Phonegap/Cordovaでは、Cordovaクラスを介してjavascript関数を呼び出すことができます。 webViewオブジェクトには、jsスクリプトを起動する専用のメソッドがあります。

だから私は、ファイルのプロジェット/クラス/コルドバ/ AppDelegate.m開く:

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

} 

をそして、私はどこかに私のjsファイルのルートにnotifyForegroundEvent()メソッドを追加しました:

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

をEt voila

2

私はfacebook(destkop、モバイルではない)で見たとき、mousemoveをチェックして、受信したチャットメッセージを読み取り済みとしてマークするかどうかを判断します。私はそれが解決策ではないことを知っていますが、良い方向に向けるかもしれません。 他のアプリに切り替えると、入力フォーカスに何が起こるかを確認します。多分それはぼやけます。

+0

良いアイデアは、私が目的で検索すると思いますが、ソリューションがSencha Touchで実装されていない場合 – vaugham

5

Cordovaのクラスファイルを編集する必要がないように、Cordovaでのアプリケーションの再開と一時停止のイベントがあります。以下は、iOS/Android用のアプリで現在使用している作業用コードです。

window.onload = function() { 
    //only fired once when app is opened 
    document.addEventListener("deviceready", init, false); 
    //re-open app when brought to foreground 
    document.addEventListener("resume", init, false); 
    //trigger when app is sent to background 
    document.addEventListener("pause", onPause, false); 

} 

function init() { 
    console.log('device ready or resume fired'); 
} 
関連する問題