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'。 –