1

我正在开发一个应用程序,它允许用户使用您的用户名和密码登录并在应用程序中做一些工作。

但是,如果用户闲置/未使用该应用程序 5 分钟,我想“锁定”我登录用户的会话并将他们重定向到登录页面。

所以,这样做的方法是在他们成功登录时启动一个全局计时器(setInterval)来调用会话验证函数。然后订阅应用程序中的任何触摸事件以重置计时器。如果计时器已过 > 300 秒,则锁定用户。

我沿着这些路线搜索并找到了 XCode Objective-C 等效项:https ://stackoverflow.com/a/309535

有没有办法在钛加速器中实现这样的目标?即收听整个应用程序上的所有事件,当它们停止发生 5 分钟时;即用户在应用程序上处于空闲状态,锁定应用程序(重定向到不同的视图,例如登录)。

我试图听应用程序范围的touchend事件来重置计时器,但它不起作用:

// alloy.js
Ti.App.addEventListener('touchend', function(e){
    console.log('### touchend ###');
});
4

2 回答 2

1

如果你touchstart给你的窗口添加一个监听器,你会收到大部分的触摸事件。某些视图,例如滚动视图(以及扩展的表格视图和列表视图)在您滚动它们时不会给您事件(它们会取消传播)。但如果这很关键,您也可以为这些以及不传播事件的任何地方添加一个侦听器。

我建议您在代码库中添加一个模块,例如参考资料中的“activity-tracker.js”:

var timeoutID;
exports.didActivity = function() {
    if (timeoutID) {
        clearTimeout(timeoutID);
    }
    timeoutID = setTimeout(userIsInactive, 5 * 60 * 1000);
};

function userIsInactive() {
     alert('WHY YOU LEAVE ME?! COME BACK!');
}

然后在您app.js的主窗口(以及您定义的任何其他窗口)中:

var win = Ti.UI.createWindow();
win.addEventListener('touchstart', require('activity-tracker').didActivity);
win.open();

如果您希望滚动视图将它们标记为活动:

scroll.addEventListener('scroll', require('activity-tracker').didActivity);

得到图片?

于 2016-01-14T23:24:38.013 回答
1

我认为您必须将每个窗口的 touchEvent 触发到 Ti.App.addEventlistener 才能超过用户的超时时间

于 2016-01-14T13:09:33.447 回答