我正在开发一款允许用户使用您的用户名和用户登录的应用。密码,并在应用程序中做一些工作。
但是,如果用户闲置/未使用该应用程序5分钟,我想"锁定"我登录用户的会话并将其重定向到登录页面。
因此,执行此操作的方法是在成功登录以调用会话验证功能时启动全局计时器(setInterval)。 然后订阅应用程序中的任何触摸事件以重置计时器。如果计时器已经过了> 300秒,锁定用户。
我在谷歌上搜索并发现了XCode Objective-C等价物:https://stackoverflow.com/a/309535
有没有办法在钛金属加速器中实现这样的效果?即当他们停止发生5分钟时,听取整个应用程序上的所有事件;即用户在应用程序上闲置,锁定应用程序(重定向到另一个视图,例如登录)。
我试图收听应用程序范围的touchend
事件以重置计时器,但它不起作用:
// alloy.js
Ti.App.addEventListener('touchend', function(e){
console.log('### touchend ###');
});
答案 0 :(得分:1)
我认为你必须将每个窗口的touchEvent触发到Ti.App.addEventlistener以超过用户的超时
答案 1 :(得分: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);
了解图片?