1

Я работаю над приложением, которое позволяет пользователю войти в систему с вашим именем пользователя & и выполнить некоторую работу в приложении.Обнаружение неактивности пользователя в приложении-титановом приложении iOS

Однако, если пользователь простаивал/не использовал приложение в течение 5 минут, я хочу «заблокировать» мой сеанс пользователя и перенаправить его на страницу входа в систему.

Таким образом, для этого нужно запустить глобальный таймер (setInterval), когда они успешно вошли в систему, чтобы вызвать функцию проверки сеанса. Затем подпишитесь на любое событие касания в приложении, чтобы сбросить таймер. Если таймер истек> 300 секунд, заблокируйте пользователя.

Я прибегая к помощи вдоль этих линий и нашел 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

Этот пастебин не говорит нам ничего о том, где вы создаете свои окна, если вы используете навигационные группы или как вы Делать это. На самом деле вам не сложно разобраться, хотя ... везде, где у вас есть ссылка на ваше окно (или окна, или группы навигации, группы вкладок или что-то еще), просто добавьте мой «touchstart», требуйте («активность -tracker '). didActivity'. –