1

我正在研究一个应用程序,允许用户使用您的用户名登录密码并在应用程序中执行一些操作。在钛应用程序iOS应用程序中检测用户不活动

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

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

我沿着这些线路的google搜索,发现的XCode的Objective-C相当于:https://stackoverflow.com/a/309535

有没有办法实现钛Appcelerator的这样呢?即在整个应用程序停止发生5分钟时收听所有事件;即用户在应用程序上空闲,锁定应用程序(重定向到不同的视图,例如登录)。

我想听听应用广泛touchend事件,复位定时器并没有奏效:

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

回答

1

我认为你必须每一个窗口的TouchEvent火到Ti.App.addEventlistener到超过您的用户超时时间

1

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

我建议你在资源添加一个模块到你的代码,类似“活动的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); 

获取图片?

+0

我使用Alloy框架,所以我开发了以下用于打开/关闭控制器的全局函数。我如何修改这些函数来实现你的建议:http://pastebin.com/HGgnHTJR – Latheesan

+0

这个pastebin没有告诉我们关于你在哪里创建你的窗口,如果你正在使用导航组,或者你如何正在做。真的,对于你来说并不难,尽管......无论你有什么对窗口的引用(或窗口,或导航组,选项卡组,或其他),只需添加我的'touchstart',require('activity -tracker')。didActivity'。 –