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

Windows runtime 确定用户何时离开WinJS应用程序,windows-runtime,cordova,winjs,Windows Runtime,Cordova,Winjs,我正在为内部WinJS应用程序构建一些非常基本的分析。这意味着第三方分析解决方案将过度杀伤力和/或不可行和/或违反第三方提供商的使用条款,因为他们通常不允许捕获有关用户的个人识别信息,在这种情况下,这是一项业务要求 我要做的是确定在多个应用程序中以及在应用程序的某些区域内花费了多少时间。为此,我显然需要知道他们什么时候进出 我找到的所有文档都说要使用WinJS.Application.oncheckpoint事件或Windows.UI.WebUI.WebUIApplication.onsuspe

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

我要做的是确定在多个应用程序中以及在应用程序的某些区域内花费了多少时间。为此,我显然需要知道他们什么时候进出

我找到的所有文档都说要使用
WinJS.Application.oncheckpoint
事件或
Windows.UI.WebUI.WebUIApplication.onsuspend
事件,这两个事件似乎是同一个基本概念中的两个访问点。问题是这不能准确反映用户何时离开应用程序!挂起似乎只有在用户切换到另一个应用程序之后,再加上大约10秒。。。。。。如果系统喜欢的话

如果用户只是点击Windows键进入开始屏幕,然后就坐在那里,即使看不到应用程序,应用程序也会无限期地继续运行(调用setInterval会影响状态)

我知道这有点边缘化,但有没有更可靠的方法来判断用户何时看不到应用程序,因为没有更好的定义

注意事项:

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

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

上的应用程序可见性部分似乎解决了这一问题。这意味着注册“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事件。然而,若用户不回来,暂停事件可能会在一段时间后出现。如果应用程序未终止,则随后可能会恢复事件。否则,激活事件


关于在特定页面上花费时间,page
ready
unload
方法应该可以工作
unload()
如果应用程序被挂起或终止,将不会被调用。

我认为引用Mozilla链接来回答WinJS问题很奇怪,但它确实有效!此链接中需要注意的一点是,一旦事件发生,您需要检查document.visibilityState以查看它是“可见”还是“隐藏”。在Windows 10应用程序(Edge webview)中使用
visibilitychange