Обнаружение состояний приложения

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

  • приложение: didFinishLaunchingWithOptions:
  • applicationDidBecomeActive:
  • applicationWillResignActive:
  • applicationDidEnterBackground:
  • applicationWillEnterForeground:
  • applicationWillTerminate:

Я читал, что теперь мы должны использовать applicationDidEnterBackground вместо applicationWillTerminate. Моя проблема в том, что они мне нужны оба.

Когда пользователь отправляет приложение в фоновый режим, оно находится в состоянии сна. Но когда пользователь закрывает приложение (из панели многозадачности), состояние закрывается. Поэтому мне нужно обнаруживать и то, и другое: когда пользователь отправляет приложение в фоновый режим, и когда пользователь (или система) закрывает его.

Есть ли способ или обходной путь, чтобы сделать это?

Я пытаюсь подписаться на UIApplicationWillTerminateNotification, но это не работает.

Спасибо за совет.


person Alejandro González    schedule 16.08.2010    source источник


Ответы (1)


Приложение закроет уведомление, которое больше не запускается на iOS 4 (как я полагаю).

Когда пользователь нажимает кнопку «Домой», приложение отправляется в фоновый режим, и вы получаете фоновое уведомление о вводе. Но когда пользователь закрывает приложение из панели многозадачности или если система закрывает его, приложение отправляет SIGKIL сообщение и немедленно закрывается, не вызывая уведомлений или делегированных методов.

person Jasarien    schedule 16.08.2010
comment
Хорошо спасибо. Таким образом, вы не можете отслеживать состояние сна и закрытое состояние. - person Alejandro González; 16.08.2010
comment
Возможно, вы сможете воспользоваться уведомлением didEnterBackground :. Единственная проблема, которую я вижу, заключается в том, что вам нужно будет использовать API фоновых задач для отправки данных на ваш сервер - и если это единственная причина, по которой вы его используете, Apple не позволит этого. Это похоже на использование геолокации только для рекламы, это не разрешено. Так что, если вы также не отправляете другие полезные для пользователя материалы, Apple не разрешит это. - person Jasarien; 16.08.2010
comment
Мне не нужно использовать API фоновых задач. Мне просто нужно знать, когда у пользователей приложение активно в фоновом режиме или закрыто, и уведомлять сервер об изменении состояний. Например, я хочу отображать комментарии пользователей с активным приложением или в фоновом режиме, но я не хочу отображать комментарии пользователей с закрытым приложением. Я еще не верю, что вы не можете отслеживать активные, неактивные и закрытые состояния приложения ... - person Alejandro González; 17.08.2010
comment
Вам понадобится API фоновой задачи - когда ваше приложение приостановлено и переведено в фоновый режим, как еще вы собираетесь уведомить свой сервер? Ваше приложение перестает работать, когда оно переходит в фоновый режим, если вы не дадите системе указание разрешить вам запускать некоторый код в фоновом режиме. - person Jasarien; 17.08.2010
comment
Да, ты прав, спасибо. Я постараюсь опубликовать свое решение проблемы, когда я его добьюсь. Еще раз спасибо. - person Alejandro González; 17.08.2010