Appli avec mesure de présence de l'utilisateur
nico401
Membre
Bonjour tout le monde, j'avais dans la tête une idée d'appli qui nécessitait de différencier :
D'après mes expériences (avec un jeu c'est visible) c'est possible de discerner l'utilisateur qui est sur l'iphone et qui joue avec celui qui a changé d'appli ou dont le téléphone est en veille car sur certains jeux, ils mettent un écran de pause quand on quitte l'appli.
Mais est-ce possible de continuer à faire tourner par exemple un compteur de temps quand l'appli est en veille?
Un jour j'aurai toutes les bases pour ensuite vous pondre un texte bien technique et clair, promis /biggrin.png' class='bbc_emoticon' alt=':D' />
- L'utilisateur qui utilise l'appli (même si le téléphone est en veille).
- Et celui qui est sur une autre, sur le Home ou autre.
D'après mes expériences (avec un jeu c'est visible) c'est possible de discerner l'utilisateur qui est sur l'iphone et qui joue avec celui qui a changé d'appli ou dont le téléphone est en veille car sur certains jeux, ils mettent un écran de pause quand on quitte l'appli.
Mais est-ce possible de continuer à faire tourner par exemple un compteur de temps quand l'appli est en veille?
Un jour j'aurai toutes les bases pour ensuite vous pondre un texte bien technique et clair, promis /biggrin.png' class='bbc_emoticon' alt=':D' />
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Techniquement non ce n'est pas possible, tu es limiter à 10 minutes de tache de fond pour finir une opération importante, mais pas plus.
Mais maintenant, c'est pas plus un problème. Tu comptais le faire comment ton compteur ?
C'est pas plus simple de stocker dans les NSUserDefaults la date courante quand tu quittes l'application, et au redémarrage, calculer l'intervale entre la date stockée et la date actuelle ? Ainsi pas besoin de faire tourner quoi que ce soit en fond.
Quand une application s'apprête à passer en arrière plan, le delegate de ta UIApplication reçoit juste avant un appel à quelques méthodes de UIApplicationDelegate, notamment applicationWillResignActive et applicationWillEnterBackground. A ce moment là , rien de plus simple pour mettre ton jeu en pause quand tu détectes que l'appli va passer en arrière plan ou être interrompue (par un appel téléphonique, etc)
De même quand une application revient au premier plan, son delegate reçoit des appels pour le lui signaler, comme applicationDidBecomeActive et applicationDidEnterForeground. Là encore tu peux donc détecter quand l'utilisateur est revenu dans ton application.
Et enfin pour un timer nul besoin de continuer à faire tourner un timer en tâche de fond (bonjour les perfs si tout le monde faisait ça d'ailleurs !). Il suffit quand l'application passe en arrière plan de mémoriser dans une variable l'heure courante, et quand l'application repasse en premier plan de comparer l'heure courante avec celle que tu avais stockée, pour savoir combien de temps s'est écoulé depuis.
Néanmoins l'idée de mon application est de différencier si l'utilisateur est sur cette appli ou sur une autre :
Cela implique de différencier la veille du passage en background je pense, donc il faudrait deux infos différentes envoyées à l'UIApplication, non..
Une autre petite question, pour avoir des infos sur l'API, il y a d'autres sources que le site d'Apple que vous employez ?
Mais bon là nul besoin d'aller chercher ailleurs, là directement dans la Protocol Reference tout est décrit : http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplicationDelegate_Protocol/Reference/Reference.html
Thaaanks !