2017-08-03 2 views
0

ログアウト機能をアプリケーションに追加して、最後の画面タッチから非アクティブ/アイドル時間のログアウトを取得します。最後の画面タッチからユーザーが非アクティブ/アイドル時間を検出したときにアプリケーションをログアウトする方法

この機能を実装する方法を教えてください。

あなたのコードにこれを追加する人もいます。

私の質問はこのコードを追加する場所です。

+0

。 – phani

+0

私は、これをuiApplicationクラスに追加してくれました。私は混乱しています –

+0

各画面でタイマーを設定する機能を1つ作成できます。各画面でタイマーを0に設定します(またはイベントに触れる)。ユーザーがアイドル状態になり、アプリケーションに戻ったときに、指定された時間(たとえば10分)を超えた場合は、そのユーザーをログアウトすることができます。 – Rohan

答えて

2

タイマーコードをすべて削除して、これを行うだけです。ユーザーがタップすると、アイドル状態のメソッドがX秒後に呼び出されるようにスケジュールします(performSelector: afterDelay:を使用)。彼らがタップするたびに、スケジュールされたリクエスト(cancelPreviousPerformRequestsWithTarget:を使用)をすべてキャンセルし、X秒間新しいリクエストをリクエストします。

int secondsUntilTimeout = 120;//time you want until they time-out. 

[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(idleTimerExceeded) object:nil];//cancel all previously scheduled time-out requests 

[self performSelector:@selector(idleTimerExceeded) withObject:nil afterDelay:secondsUntilTimeout];//schedule a new time-out request 

だからあなたの最終的なコードは次のようになります:最初のビューコントローラ(intialview)で

- (void)sendEvent:(UIEvent *)event { 
    [super sendEvent:event]; 
    NSSet *allTouches = [event allTouches]; 
    if ([allTouches count] > 0) { 
     UITouchPhase phase = ((UITouch *)[allTouches anyObject]).phase; 
     if (phase == UITouchPhaseBegan || phase == UITouchPhaseEnded) { 

      int secondsUntilTimeout = 120;//time you want until they time-out. 

      [NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(idleTimerExceeded) object:nil];//cancel all previously scheduled time-out requests 

      [self performSelector:@selector(idleTimerExceeded) withObject:nil afterDelay:secondsUntilTimeout];//schedule a new time-out request 

     } 
    } 
} 


- (void)idleTimerExceeded { 
    NSLog(@"idle time exceeded"); 
} 
関連する問題