2011-01-27 2 views
3

Когда пользователь успешно войдет в мое приложение, начнется сеанс, после X периода бездействия сеанс будет отключен.сеанс iPhone - тайм-аут при неактивности

Теперь, как вы обнаруживаете, пользователь видит, активен ли он с помощью приложения или нет?

1) Проверьте каждую кнопку?

2) проверить на экране нагрузку?

ответ

5

Самый элегантный способ, который я нашел для этого, - использовать категорию на UIApplication, которая предоставляет метод sendEvent:, который сбрасывает NSTimer (после того, как он, конечно же, назвал реализацию суперкласса). Если таймер выключен, отправьте уведомление. Слушайте уведомление везде, где вы хотите реагировать на таймаут. Выполнение этого способа означает, что вам не нужно добавлять код через приложение, чтобы сбросить таймер при каждом взаимодействии.

Сказав это, я согласен с Лохматой лягушкой, это не типичное поведение для приложения iOS, поэтому, как правило, это не хорошая идея с точки зрения HCI.

2

Если вы спрашиваете: «Как определить активность», вы всегда можете сбросить таймер после получения события касания, чей обратный вызов вызывает «неактивное событие пользователя».

Я не могу много говорить о вашем общем выборе дизайна здесь, так как я не думаю, что большинство пользователей iOS ожидают, что их приложения будут вести себя таким образом. Подумайте о своих пользователях и будьте осторожны.

+0

Если вы используете время NSTimer, например, вам нужно будет проверить событие касания, полученное на каждом экране? может также вызвать таймер для сброса, когда экран изменится, но снова все равно придется делать это на каждом экране - есть ли лучший способ? – 001

+0

@ 001 Вам, вероятно, придется проверять каждое событие касания на каждом экране. Есть ли способ лучше? Может быть. Я думаю, что большая проблема - ваше фундаментальное дизайнерское решение о том, чтобы иметь тайм-аут в первую очередь; идея о том, что приложение может «таймизировать» пользователей из-за бездействия, редка, в лучшем случае на iOS, и, как правило, то, что ваши пользователи не ожидают или не желают. –

+3

Я не согласен. Мы используем одно устройство, которое используется несколькими пользователями во время процесса инвентаризации/доставки/получения. НАШИ ПОЛЬЗОВАТЕЛИ ЗАПРЕЩАЛИ ЭТУ ФУНКЦИЮ, так что через 5 минут она вернется к экрану входа в систему. Таким образом, если он оставлен на счетчике, другой пользователь может войти в систему и использовать одно и то же устройство. Предположение здесь состоит в том, что у каждого есть собственный iphone/itouch, который НЕ обязательно имеет место в корпоративной среде, где продукт НЕ для потребителя :) Просто потому, что вы не можете придумать причину, почему он вам понадобится не означает, что это не требуется. Снимите шторы, –

-1

Вы также можете проверить на это заявление.

+0

Этот ответ - хорошее предложение. Предполагая, что вы не хотите, чтобы тайм-аут сеанса был короче, чем тайм-аут бездействия iOS, просто запишите время, когда приложение переходит в спящий режим и после пробуждения, если прошедшее время слишком длинное, а затем выйдите из системы. –

Смежные вопросы