Нажатие кнопки «Домой», какой метод AppDelegate следует использовать для планирования локального уведомления - PullRequest
4 голосов
/ 24 мая 2011

Я хотел бы запланировать локальное уведомление, как только пользователь нажмет кнопку «Домой».

Какой метод делегата приложения следует использовать в этом случае:

  • applicationWillResignActive
  • applicationDidEnterBackground
  • applicationWillTerminate

Думаю, мне не следует использовать третий, но в чем разница между первыми двумя?

Есть ли какой-нибудь способ отличить прерывание от телефонного звонка / другого уведомления и фактическое нажатие кнопки домой?

Заранее спасибо.

Ответы [ 3 ]

7 голосов
/ 24 мая 2011

Чтобы запланировать локальное уведомление, вы должны использовать applicationDidEnterBackground вместо applicationWillResignActive, потому что applicationWillResignActive звоните каждый раз, когда приложение получает какой-то определенный прерывание по телефону, смс. Вы хотите запланировать уведомление, когда пользователь нажимает кнопку «Домой», и в этом случае applicationDidEnterBackground является подходящим местом для этого.

Одна вещь, которую следует помнить перед использованием applicationDidEnterBackground, это то, что у этого делегата есть approximately five seconds to perform any task, если любая задача в этом делегате займет больше времени, тогда os прекратит работу вашего приложения. Вы также можете запросить дополнительное время для выполнения, используя beginBackgroundTaskWithExpirationHandler, а затем использовать дополнительный поток для выполнения задачи. Подробнее о делегатах приложения можно узнать по ссылкам -

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

http://www.cocoanetics.com/2010/07/understanding-ios-4-backgrounding-and-delegate-messaging/

2 голосов
/ 24 мая 2011

Вы должны сделать это в applicationDidEnterBackground:

  • applicationWillTerminate не будет вызывается, когда пользователь попадает в дом кнопка. С переключением приложений это отправляется только когда пользователь явно выходит из приложения или, возможно, в низком ситуации с памятью.

  • applicationWillResignActive is дополнительно вызывается, когда приложение кратко прервано, скажем, с помощью SMS или оповещение по телефону. (Хотя, если пользователь затем переключается на сообщения или телефон приложение ваше приложение в конечном итоге получит applicationDidEnterBackground сообщение).

Похоже, вас особенно интересует момент, когда пользователь нажимает кнопку «Домой» и приложение переходит в фоновый режим. applicationDidEnterBackground - это место.

Вы также можете всегда планировать локальное уведомление и отвечать на него, только если приложение не запускается, когда оно происходит. Не лучше обязательно, просто вариант для рассмотрения.

2 голосов
/ 24 мая 2011

Вы должны использовать applicationDidEnterBackground.

applicationWillResignActive вызывается каждый раз, когда ваше приложение прерывается, например, телефонный звонок или SMS-сообщение. В этом случае, если пользователь их игнорирует, ваше приложение будет работать на переднем плане.

applicationDidEnterBackground вызывается только тогда, когда ваше приложение фактически переходит в фоновый режим.

...