确定用户何时离开WinJS应用程序

时间:2013-06-05 21:15:42

标签: windows-runtime cordova winjs

我正在为内部WinJS应用程序构建一些非常基本的分析。这意味着第三方分析解决方案既可能过度杀伤和/或不可行,也可能违反第三方提供商的使用条款,因为他们通常不会捕获有关用户的个人身份信息,在这种情况下,这是一项业务要求。

我要做的是确定在多个应用中以及在应用的某些区域内的区域花费了多少时间。为此,我显然需要知道他们何时进入和离开。

我发现的所有文档都说使用WinJS.Application.oncheckpoint事件或Windows.UI.WebUI.WebUIApplication.onsuspending事件,这似乎是两个接入点,它们都是相同的基本概念。问题是这不能准确反映用户何时离开应用程序!暂停似乎只有在用户切换到另一个应用程序之后才会发生,加上大约10秒......如果系统感觉就好了。

如果用户只是点击Windows键进入“开始”屏幕并且只是坐在那里,那么应用程序将继续无限期运行(对setInterval的调用能够影响状态),即使该应用程序无法看到!

我理解这是一个有点边缘的情况,但是由于缺乏更好的定义,有没有更可靠的方法来判断用户何时无法看到该应用?

备注:

  • 我确实查看了Windows 8的Cordova 2.7代码,他们正在使用检查点事件来驱动Cordova暂停事件。

2 个答案:

答案 0 :(得分:6)

<{3}}上的

App Visibility部分似乎解决了这个问题。这意味着注册“msvisibilitychange”事件,以了解用户何时离开并移回您的应用程序。

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

此外,还需要处理Application lifecyclesuspending和已激活的事件。

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

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

毋庸置疑,需要处理订购的细微差别和/或不存在的事件。例如 - 如果用户离开并快速返回,将收到visibilitychange事件。而如果用户没有回来,暂停事件可能会在一段时间后到来。如果应用程序未终止,则可能之后是恢复事件。否则,激活事件。

考虑在特定网页上花费时间,页面readyunload方法应该有效。如果应用程序被暂停或终止,则不会调用unload()

答案 1 :(得分:1)

https://developer.mozilla.org/en-US/docs/Web/Reference/Events/visibilitychange

使用可见性更改事件来识别用户何时无法再看到该应用。