6

ユーザーがアプリケーションを使い始めるたびに知る必要があります。

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

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

アプリのブートストラップにリスナーを追加しましたが、いつ起動するかを認識しています。

ケース2(TODO):アプリは起動しましたが、もうアクティブではありません

ユーザーはタスクバーからアプリケーションをリロードします。

アプリケーションがタスクバーからフォアグラウンド(alt + tabなど)にいつ来るのか知りたいです。

アプリはまだ実行中であり、どのイベントを聞くべきかわからないため、これをキャッチするのは難しいです。実際、私はこの振る舞いに名前を付ける方法すら知りません。

4

3 に答える 3

6

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');
}
于 2015-03-29T16:28:40.883 に答える
4

iOSアプリの開発者が私を助けてくれました。彼の答えは、きれいで再利用できるように見えるので、私に非常によく合います。だから私はここでそれを作成します:

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

そこで、Projet / Classes / Cordova/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
}

Etvoilà

于 2013-03-14T14:06:39.477 に答える
2

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

于 2013-03-14T13:22:56.810 に答える