iOS4: событие завершения приложения? - PullRequest
3 голосов
/ 29 апреля 2011

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

applicationWillTerminate

Чего я действительно хотел бы добиться, так это получить какое-то событие или уведомление, когда пользователь нажимает Home дважды и нажимает на красный шарик в приложении. Меня не волнует переход приложения в фоновый режим, есть пара событий, которые обрабатывают это правильно, и все они работают нормально.

Мне нужно это, чтобы я мог "сообщить" своему серверу прекратить отправку push-уведомлений в APNS для приложений, которые завершены и не работают в фоновом режиме.

Если вам известен более простой способ добиться этого, я был бы рад услышать :)

Спасибо

Ответы [ 4 ]

2 голосов
/ 29 апреля 2011

Зарегистрируйте свой объект (контроллер представления и т. Д.), Чтобы прослушать уведомление UIApplicationWillTerminateNotification и / или переопределить метод -applicationWillTerminate: делегата приложения и поместить туда свой код .

1 голос
/ 29 апреля 2011

Из документации UIApplicationDelegate по этому вопросу:

Для приложений, поддерживающих фоновое выполнение, этот метод обычно не вызывается, когда пользователь выходит из приложения, поскольку в этом случае приложение просто перемещается в фоновый режим.Однако этот метод может быть вызван в ситуациях, когда приложение работает в фоновом режиме (не приостановлено), и система должна по какой-то причине прекратить его.

Мне кажется, что если ваш фоновый процесс неактивно делать что-то в фоновом режиме (не будучи приостановленным), если метод applicationWillTerminate никогда не будет вызван.

Я полагаю, это зависит от того, что вы определяете как "быть в фоновом режиме".

1 голос
/ 29 апреля 2011

Ангел, то, что ты просишь, не может быть сделано.Приложение будет прекращено с SIGKILL.Неостановимый, не подхватываемый, без уведомлений.Нет разницы между завершением, инициированным системой, или запросом, запрошенным пользователем.

Вы получите applicationWillTerminate, только если ваше приложение не поддерживает фоновую обработку.

0 голосов
/ 29 апреля 2011

IIRC это выглядит так:

На старте:

  • didFinishLaunchingWithOptions
  • applicationDidBecomeActive

Нажимаем домой:

  • applicationWillResignActive
  • applicationDidEnterBackground

Возвращение с домашнего экрана:

  • applicationWillEnterForeground
  • applicationDidBecomeActive

applicationWillTerminate вызывается, когда ваше приложение выходит из-за вызова или ОС по какой-то причине его убивает.

...