2011-01-27 16 views
3

ユーザーが私のアプリケーションに正常にログインすると、セッションが開始されます。非アクティブ期間がXになると、セッションはタイムアウトします。iPhoneセッション - 非アクティブ時のタイムアウト

ここで、ユーザーが自分のアクティブなアプリケーションを使用しているかどうか、または使用していないことを確認する方法を教えてください。

1)すべてのボタンをオンにしますか?

2)画面の読み込みを確認しますか?

答えて

5

私はこれを行うために見つけた最もエレガントな方法は、(もちろん、スーパークラスの実装を呼び出した後)NSTimerをリセットsendEvent:方法を提供UIApplication上のカテゴリを使用することです。タイマーがオフになったら、通知を送信します。タイムアウトに反応するすべての場所で通知を聞きます。このようにすると、すべてのインタラクションでタイマーをリセットするために、すべてのコードをアプリケーションに追加する必要がなくなります。

私はShaggy Frogに同意しましたが、これはiOSアプリケーションの典型的な動作ではないので、通常はHCIの観点からは良い考えではありません。

2

「アクティビティを定義するにはどうすればよいですか」と尋ねる場合は、コールバックが「ユーザーが非アクティブなイベント」をトリガーするタッチイベントが受信された後、いつでもタイマーをリセットできます。

私はほとんどのiOSユーザーが自分のアプリがこのように動作するとは思っていないので、あなたの全体的なデザインの選択肢はあまり話せません。あなたのユーザーを考え、慎重に進めてください。

+0

たとえば、NSTimerの時間を使用する場合は、すべての画面で受け取ったタッチイベントを確認する必要がありますか?画面が変化したときにリセットするためにタイマーを呼び出すこともできますが、すべての画面でこれを行う必要があります。 – 001

+0

@ 001おそらく、すべての単一の画面ですべてのシングルタッチイベントをチェックする必要があります。より良い方法がありますか?多分。私は大きな問題は、最初にタイムアウトを取るという基本的な設計上の決定だと思います。アプリが非アクティブなためにユーザーを「タイムアウト」できるというアイデアは、iOS上ではまれなことですが、一般的にユーザーが期待したり望んでいないものです。 –

+3

私は同意しません。私たちは、在庫/配送/受信プロセス中に複数のユーザーが使用する単一のデバイスを使用します。ユーザーがこの機能を要求したので、5分後にログイン画面に戻ります。この方法でカウンタに残しておけば、別のユーザがログインして同じデバイスを使用することができます。ここでの前提は、誰もが自分のiPhone/itouchを持っているということです。これは、製品が消費者のためではないエンタープライズ環境では必ずしもそうではありません:)あなたがなぜそれが必要なのかを考えることができないからです。必須ではありません。ブラインダをオフにしてください。 –

-1

また、このためのアプリケーションのアクティブなコールバックを確認することもできます。

+0

この回答は良い提案です。セッションのタイムアウトをiOS独自の非アクティブタイムアウトよりも短くしたくない場合、経過時間が長すぎてログアウトした場合、アプリがスリープ状態になり、スリープ状態になった時刻を記録してください。 –

関連する問題