Appli avec mesure de présence de l'utilisateur

nico401nico401 Membre
mars 2012 modifié dans Vos applications #1
Bonjour tout le monde, j'avais dans la tête une idée d'appli qui nécessitait de différencier :
  • 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 image/biggrin.png' class='bbc_emoticon' alt=':D' />

Réponses

  • 'nico401' a écrit:


    Mais est-ce possible de continuer à  faire tourner par exemple un compteur de temps quand l'appli est en veille?




    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.
  • AliGatorAliGator Membre, Modérateur
    Je pense que tu n'utilises pas les bons termes et la bonne approche.



    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.
  • C'est vrai que c'est bien plus simple, je ne connais pas encore les fonctions offertes par l'API, mais je note image/tongue.png' class='bbc_emoticon' alt=':P' />



    Néanmoins l'idée de mon application est de différencier si l'utilisateur est sur cette appli ou sur une autre :
    • Il lance l'appli --> il rentre des infos --> lance --> compteur lancé :
      • Si il laisse le téléphone se mettre en veille, le compteur tourne toujours.
      • Si il appuie sur Home le compteur s'arrête.



    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..
  • AliGatorAliGator Membre, Modérateur
    Oui et alors ?
  • Est-ce faisable? image/smile.png' class='bbc_emoticon' alt=':)' />



    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 ?
  • AliGatorAliGator Membre, Modérateur
    Oui, Google. Mais aussi... le site d'Apple. Y'a pas que les Class Reference, y'a aussi les Programming Guides entre autres.



    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
  • Merci beaucoup, je vais regarder ça, je lis et je poserai mes question qu'après image/biggrin.png' class='bbc_emoticon' alt=':D' />



    Thaaanks !
Connectez-vous ou Inscrivez-vous pour répondre.