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 に答える