Cette question semble être l'essence de plusieurs autres sur ce forum. Je crois qu'il est possible pour l'application iPhone active de continuer à fonctionner, et plus précisément de continuer à recevoir des rappels de minuterie, après qu'elle est entrée dans l'état inactif (soit par la minuterie inactive, soit par l'utilisateur appuyant sur le bouton de verrouillage du matériel).NSTimer callbacks lorsque l'application iPhone est inactive
La documentation dit expressément que, alors qu'une application est inactive, il est en cours d'exécution, mais pas la distribution des événements entrants (je ne donne pas un lien parce que je suis nerveux à NDA - dois-je détendre à ce sujet est tout ce poste une violation? soupir).
En outre, deux réponses par l'utilisateur "Ambr Str" indiquent directement qu'il est possible de continuer à recevoir des rappels de minuterie, et il fournit un code de code pour y parvenir (je ne peux pas lier à cela parce que je suis un nouvel utilisateur, désolé - recherchez la question: "Qu'arrive-t-il à une application iPhone lorsque l'iPhone passe en mode veille?" pour trouver sa réponse).
J'ai essayé de créer mes rappels comme il le suggère, mais une fois que mon application devient inactive, les rappels s'arrêtent. Je viens de remarquer que pendant que l'iPhone est branché, si l'application devient inactive (en raison d'un délai d'inactivité ou d'un appui sur le bouton de veille), les rappels continuent à se produire - peut-être devrais-je obtenir mes utilisateurs pour transporter une batterie avec eux ;-)
UIApplication.idleTimerDisabled aide-t-il ou ne fonctionne-t-il pas lorsque l'utilisateur appuie manuellement sur le bouton de veille? –
Comme vous le suggérez, UIApplication.idleTimerDisabled ne fonctionne pas si l'utilisateur appuie sur le bouton de veille, mais il y a plus que cela ... UIApplication.idleTimerDisabled est idéal si vous voulez empêcher votre application d'entrer dans l'état inactif quand le périphérique n'est pas interagi avec. C'est approprié pour un jeu. Dans mon cas, je veux spécifiquement que l'application devienne inactive (comme je veux réserver l'alimentation de l'appareil si possible). En outre, je souhaite autoriser l'utilisateur à verrouiller l'appareil afin que l'entrée ne soit pas reçue. –
Une implémentation compatible avec iOS 5 est disponible sur https://github.com/mruegenberg/MMPDeepSleepPreventer – mrueg