2016-11-08 7 views
0

私はコードワ「ポーズ」と「レジューム」機能を適用したいアプリがあります。私は "一時停止"を実装しました。 「ポーズ」リスナの中で、私はユーザをログアウトします。私が必要とするのは、「一時停止」が5秒を超える場合にのみユーザーをログアウトさせることです。だから、ユーザーがアプリを離れる場合は、5秒以内にアプリに戻り、ログアウトするのではなく、アプリを使い続けることができます。ポーズが5秒未満の場合は、再開とイオニックアプリ

私は以下を使用しましたが、5秒間待ってから戻ってもログアウトします。

$timeout(function(){ 
    myLogoutFunction(); //I want to cancel this if the user returns before the function fires. 
}, 5000); 

答えて

0

$タイムアウトをキャンセルする必要があります。アプリケーションの再開イベントが発生すると、$timeout.cancel(promise)を試してください。これにより操作が中止されます。または単純なJavaScriptで:

// on pause 
let _timer = setTimeout(function(){  
     //logout the user 
}, 5000); 
// on resume 
clearTimeout(_timer); 

$タイムアウトはsetTimeoutメソッドのための単なるラッパーです。
これはいくつかの洞察を提供します。

+0

タイマーが決して '' pause''に登録されないので、これは動作しません(https://cordova.apache.org/docs/en/latest/cordova/events/events.html#ios- quirks)をiOS上に作成します。 – peteb

0

Ionic 1では、アプリケーションが実行されているWebビューがすぐに停止するため、'pause'イベントハンドラは実際にはiOSで呼び出されません。

私は以下を使用しましたが、5秒間待ってから戻ってもログアウトします。

The actual 'pause' event handler will be called on the subsequent 'resume' event being fired.彼らは'resume'にキューイングされますので、タイマーの利用者は、このシナリオでは動作しません。代わりに、ユーザーが最後に行った操作を追跡し、ファイルシステムにシリアル化できるローカルDB経由でセッションを管理したり、リモートでセッションを管理したり、リモートからログアウトを破棄したり、セッションが有効かどうかを'resume'で確認できます。セッションが有効でなくなった場合は、ログイン画面にリダイレクトし直してください。ただし、これらのシナリオでは、タイムアウト時間を30秒以上に増やすことをお勧めします。たぶん、10分が良いでしょう。

これは、基本的なネイティブライフサイクルイベントにアクセスできないWebviewを使用した結果です。

ng-idle moduleを試してみることもできますが、実際には使用していないので、動作しているかどうかはわかりませんが、ユーザーが最後にアクティブになったときに触れる/ 。

ng-idleの追加情報およびアイドル状態のユーザーを検出するためのその他の方法については、questionを参照してください。

関連する問題