iOS4: событие завершения приложения?
Я хотел бы знать, как я могу определить, когда приложение собирается быть прекращено. Я имею в виду действительно завершенный, а не просто переход в фоновый режим. Я использовал это событие, и оно не срабатывает:
ApplicationWillTerminate
Чего я действительно хотел бы добиться, так это получить какое-то событие или уведомление, когда пользователь дважды нажимает Home и нажимает красный шар на приложение. Меня не волнует, что приложение переходит в фоновый режим, есть несколько событий вот и справляйся с этим как следует и все они прекрасно работают.
Мне это нужно, чтобы я мог "информировать" свой сервер о прекращении отправки push-уведомлений в APNS для приложений, которые завершены и не работают в фоновом режиме.
Если вы знаете более простой способ достичь этого, я был бы рад услышать :)
Спасибо
4 ответа:
Ангел, то, о чем ты просишь, не может быть сделано. Приложение будет прекращено с помощью SIGKILL. Неудержимый, не уловимый, никаких уведомлений. Нет никакой разницы между инициированным системой завершением или завершением, запрошенным пользователем.
Вы получите applicationWillTerminate только в том случае, если ваше приложение не поддерживает фоновую обработку.
Зарегистрируйте свой объект (контроллер вида и т. д.) прислушаться к тому, что
UIApplicationWillTerminateNotification
уведомление и / или переопределение делегата приложения-applicationWillTerminate:
метод и поместите туда свой код.
Из документов UIApplicationDelegate по этому вопросу:
Для приложений, поддерживающих фоновое выполнение, этот метод является вообще не вызывается, когда пользователь выходит из приложения, потому что приложение просто перемещается в Предыстория В этом случае. Однако это метод может быть вызван в ситуациях где выполняется приложение фон (не подвешен) и система должна прекратить его для некоторых причина.
Мне кажется, что если только ваш фоновый процесс активно делает что-то в фоновом режиме (не приостанавливается), и метод applicationWillTerminate никогда не будет вызван.
Я думаю, это зависит от того, что вы определяете как "быть на заднем плане".
IIRC это звучит так:
На старте:
didFinishLaunchingWithOptions
applicationDidBecomeActive
Нажатие home:
applicationWillResignActive
applicationDidEnterBackground
Возвращаясь с главного экрана:
applicationWillEnterForeground
applicationDidBecomeActive
applicationWillTerminate
вызывается, когда ваше приложение завершает работу из-за вызова или ОС убивает его по какой-либо причине.