2

社内の WinJS アプリ用の非常に基本的な分析を構築しています。これは、サードパーティの分析ソリューションが過剰である、および/または機能しない、および/またはサードパーティのプロバイダーの利用規約に反することを意味すると解釈してください。要件。

私がやろうとしているのは、複数のアプリと、アプリの特定の領域内の領域でどれくらいの時間が費やされているかを判断することです。このためには、彼らがいつ出入りするかを明らかに知る必要があります。

私が見つけたすべてのドキュメントには、WinJS.Application.oncheckpointイベントまたはイベントを使用するように書かれていますWindows.UI.WebUI.WebUIApplication.onsuspendingが、これは実際には同じ基本概念への 2 つのアクセス ポイントのようです。問題は、ユーザーがアプリを離れたときにこれが正確に反映されないことです! サスペンドは、ユーザーが別のアプリに切り替えた後にのみ発生するようで、システムがそのように感じた場合、プラス約 10 秒……。

ユーザーが単に Windows キーを押してスタート画面に移動し、そこに座っているだけの場合、アプリが表示されなくても、アプリは無期限に実行され続けます (setInterval の呼び出しは状態に影響を与える可能性があります)。

これは少し特殊なケースであることは理解していますが、より適切な定義がないために、ユーザーがアプリを表示できない場合に、より信頼できる方法はありますか?

ノート:

  • Windows 8 の Cordova 2.7 コードを確認したところ、チェックポイント イベントを使用して Cordova の一時停止イベントを実行しています。
4

2 に答える 2

6

アプリケーションライフサイクルのアプリの可視性セクションは、これに対処しているようです。これは、'msvisibilitychange' イベントに登録して、ユーザーが離れてアプリに戻ったときを知ることを意味します。

default.js:
document.addEventListener('msvisibilitychange', function ()
{
    console.log('visibility changed');
    console.log(document.visibilityState); // 'hidden' or 'visible'
});

さらに、中断再開、およびアクティブ化イベントも処理する必要があります。

default.js:
Windows.UI.WebUI.WebUIApplication.onsuspending = function ()
{
    console.log('suspending');
}

Windows.UI.WebUI.WebUIApplication.onresuming= function ()
{
    console.log('resuming');
}    

言うまでもなく、その順序付けのニュアンス、および/またはイベントが欠席しているケースを処理する必要があります。たとえば、ユーザーが離れてすぐに戻ってきた場合、visibilitychange イベントが受信されます。一方、ユーザーが戻ってこない場合は、しばらくして中断イベントが発生する可能性があります。アプリが終了していない場合は、再開イベントが続く場合があります。それ以外の場合は、アクティブ化されたイベント。

特定のページに時間を費やすことに関しては、ページreadyunloadメソッドが機能するはずです。unload()アプリが一時停止または終了した場合は呼び出されません。

于 2013-06-06T05:00:50.557 に答える