2010-07-14 21 views
1

Était en train de lire la documentation iOS4 pour le multitâche, et ne pouvait pas comprendre.Comment puis-je obtenir un bloc de code à exécuter sur l'iPhone une fois toutes les 24 heures à minuit si mon application est suspendue (multitâche)

J'ai fondamentalement besoin de mettre à jour le nombre de badges sur l'icône de mon application après minuit chaque jour tant que l'application fonctionne en mode suspendu (avec le multitâche).

Je sais que cela doit être possible, mais je ne trouve pas la meilleure façon de le faire.

Merci.

+0

Les vidéos Session 105 et 109 de WWDC 2010 vous parleront des états et de leur fonctionnement. Je vous suggère fortement de regarder ces deux vidéos pour comprendre cela. Ils sont disponibles sur: http://developer.apple.com/videos/wwdc/2010/ – jer

Répondre

3

iOS "multitâche" est très spécifique. Il existe une distinction importante entre les états ici:

Suspendu: Votre application réside en mémoire, mais ne reçoit aucun temps d'exécution. Ceci n'est vraiment utile que pour la commutation rapide d'applications.

Arrière-plan: Dans certains cas particuliers, vous pouvez demander à l'OS de lancer votre application en arrière-plan. (Lecture de l'audio, localisation, fin d'une longue tâche, voip.)

Donc, la réponse courte à votre question est, "vous ne pouvez pas."

Voici quelques liens utiles sur iOS multitâche, tel qu'il est.

Understand an Application's States and Transitions

Executing Code in the Background

+1

En outre, "finir une longue tâche" est vraiment trompeur. "long" dans cette définition est de quelques secondes, peut-être jusqu'à environ 6 secondes. Ne pas parler d'heures ici. – jer

+0

Vous avez environ 5-6 secondes lorsque vous passez en mode d'arrière-plan avant d'être suspendu. Mais si votre application est, disons, en train de télécharger des images lorsque l'utilisateur clique sur le bouton d'accueil, vous pouvez demander un peu de temps pour terminer le téléchargement. [Exécution d'une tâche de longue durée en arrière-plan] (http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html#//apple_ref/doc/uid/TP40007072- CH5-SW12) –

+0

Vous pouvez obtenir jusqu'à 10 minutes (600 secondes) si vous configurez une tâche de finition d'arrière-plan –

0

Vous pouvez utiliser un UILocalNotification pour régler le badge (sans alerte) mais vous ne pouvez pas augmenter le badge parce que vous êtes l'application n'a pas la possibilité d'exécuter un code lorsque la notification se déclenche.

Vous pouvez programmer jusqu'à 64 notifications à l'avance, une à minuit pour les 64 prochains jours, chacune fixant un nouveau numéro de badge. Il serait plus judicieux de programmer une notification répétitive, mais comme votre application ne peut pas exécuter de code, elle ne peut pas incrémenter le numéro de badge qui ne fonctionne pas.