1

x分間操作がないと、ユーザーを自動ログアウトするタイマーなどを作成したいと考えています。BankofAmericaアプリケーションと同じ方法で実行したいと思います。BofAアプリがそれを行う方法は、アプリケーションがバックグラウンドに置かれている場合でも、それでも時間を追跡します。制限時間に達すると、ログアウトしていることを示す通知がポップアップ表示されます。

アプリケーションがバックグラウンドに移行したときにタイマーを一時停止せずにこれを行うにはどうすればよいですか?

4

1 に答える 1

2

おそらく最も簡単なことは、AppDelegate を に登録してNSNotificationCenter、すべての (または特定の) 送信者からのすべてのイベントをリッスンすることだと思います。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resetTimer) name:nil object:nil];

およびパラメータnilへの受け渡しには注意が必要です。これは大量の通知を受け取るためです (メモリ警告など、アプリケーションから発信されていないものも含まれます)。特定のイベント名やオブジェクトのリストを知っているか、持っている場合は、代わりにそれらを観察します。nameobject

メソッドでは、resetTimer単純に以前のタイマーを無効にして、何らかのlogoutメソッドを呼び出し、iVar を現在の日付/時刻 (つまり、 timerStart = [NSDate now];)に設定する新しいタイマーを作成します。

上記の手順により、アプリがフォアグラウンドにあるときに処理が行われます。

アプリがバックグラウンドになると、タイマーは機能しなくなります。ただし、アプリがフォアグラウンドに戻ると、[NSDate now]timerStartiVar の間のデルタを計算できます。デルタが一定の間隔よりも大きい場合は、logoutメソッドを呼び出します。resetTimerそうでない場合は、電話してタイマーを再度開始することができます。

編集

ユーザーがログアウトしようとしていることをバックグラウンド アプリに警告させたい場合は、UILocalNotification. アプリケーションがバックグラウンドに入ったときに警告するようにスケジュールできます。アプリケーションがフォアグラウンドに入ったら、その通知をキャンセルできます (そして、上記の手順を実行します)。

于 2012-04-25T03:06:03.180 に答える