Bouton Accueil, quelle méthode AppDelegate devrais-je utiliser pour planifier une notification locale?

Je voudrais planifier une notification locale dès que l'user clique sur le button d'accueil.

Quelle méthode de délégation d'application dois-je utiliser dans ce cas:

  • applicationWillResignActive
  • applicationDidEnterBackground
  • applicationWillTerminate

Eh bien, je suppose que je ne devrais pas utiliser le troisième, mais quelle est la différence entre les deux premiers?

Y a-t-il un moyen de distinguer l'interruption d'un appel téléphonique / d'une autre notification et le fait d'appuyer sur le button d'accueil?

Merci d'avance.

Pour planifier une notification locale, vous devez utiliser applicationDidEnterBackground au lieu d'utiliser applicationWillResignActive car applicationWillResignActive appelle chaque fois que l'application reçoit un appel spécifique à la ligne d'interruption, sms. Vous voulez planifier une notification lorsque l'user appuie sur le button d'accueil et dans ce cas, applicationDidEnterBackground est l'endroit approprié pour cela.

Une chose à garder à l'esprit avant d'utiliser applicationDidEnterBackground est que ce délégué dispose d' approximately five seconds to perform any task , si une tâche de ce délégué prend plus de time, alors os mettra fin à votre application. Vous pouvez également requestr un timeout d'exécution supplémentaire en utilisant beginBackgroundTaskWithExpirationHandler , puis utiliser un thread secondaire pour effectuer une tâche. Pour plus de détails sur les delegates à l'application, suivez les liens –

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/

Vous devez utiliser applicationDidEnterBackground.

applicationWillResignActive est appelée à chaque fois que votre application est interrompue, comme un appel téléphonique ou un message SMS. Dans ce cas, si l'user les ignore, alors votre application continuera de fonctionner au premier plan.

applicationDidEnterBackground n'est appelée que lorsque votre application est en arrière-plan.

Vous devriez le faire dans applicationDidEnterBackground:

  • applicationWillTerminate ne sera pas appelée lorsque l'user clique sur le button d'accueil. Avec la commutation d'applications, cette option n'est envoyée que lorsque l'user quitte explicitement l'application ou éventuellement dans des situations de faible memory.

  • applicationWillResignActive est en outre appelée lorsque l'application est brièvement interrompue, par exemple par un SMS ou un appel téléphonique. (Cependant, si l'user passe à l'application Messages ou Téléphone, votre application recevra éventuellement un message applicationDidEnterBackground).

Il semble donc que vous êtes spécifiquement intéressé par le moment où l'user appuie sur le button d'accueil et l'application passe en arrière-plan. applicationDidEnterBackground est l'endroit.

Vous pouvez également planifier la notification locale et y répondre uniquement si l'application n'est pas en cours d'exécution. Pas nécessairement mieux, juste une option à considérer.