La promesse de notre page d’accueil sonne un peu louche : les badges se débloquent pendant que le téléphone reste dans votre poche, et la batterie ne s’en aperçoit pas. Le scepticisme est sain, car bien des apps de fitness assassinent réellement les batteries. Voici donc exactement comment Everest fonctionne, compromis compris.
Votre téléphone compte les pas, que nous existions ou non
Le fait le plus important : Everest ne compte pas les pas. Votre téléphone le fait, en permanence, sur du matériel conçu pour ça.
Depuis l’iPhone 5s en 2013, chaque iPhone embarque un coprocesseur de mouvement, une puce minuscule qui surveille l’accéléromètre en continu en consommant une fraction infime de ce que brûlerait le processeur principal. Les téléphones Android font l’équivalent avec un sensor hub. Compter vos pas n’est pas une fonctionnalité d’app ; c’est une fonctionnalité de téléphone, déjà provisionnée dans votre budget batterie, que vous installiez quelque chose ou non.
Ces comptages atterrissent dans le magasin de santé du système : Apple Santé (HealthKit) sur iPhone, Health Connect sur Android. Avec votre permission, Everest y lit les totaux de pas. Les pas seulement : la permission est limitée à un seul type de donnée, et l’app ne demande jamais la localisation, la fréquence cardiaque ni quoi que ce soit d’autre.
Ce que fait vraiment la « synchronisation en arrière-plan »
Quand une synchronisation s’exécute, Everest réalise trois opérations bon marché :
- lire les totaux de pas depuis la dernière synchronisation dans Apple Santé ou Health Connect,
- comparer vos nouveaux totaux jour, semaine et cumul aux seuils des badges,
- si un seuil est franchi, déclencher une notification locale et enregistrer le déblocage.
Cela représente quelques millisecondes de calcul et, pour les totaux quotidiens anonymes envoyés à notre serveur, une charge utile de quelques dizaines d’octets. Pas de radio GPS, pas de session capteur continue, pas de verrou d’éveil maintenu ouvert.
La vraie question d’ingénierie n’est pas ce que fait la synchronisation, mais quand elle tourne. Et la réponse honnête est : quand le système d’exploitation le décide.
Sur iPhone, Everest s’inscrit à la livraison en arrière-plan de HealthKit : le système réveille brièvement l’app quand de nouvelles données de pas sont disponibles, au plus environ une fois par heure pour les pas. Sur Android, une tâche périodique planifiée via WorkManager fait de même, et le système aligne ces tâches sur les moments où l’appareil est déjà éveillé. Sur les deux plateformes, ouvrir l’app déclenche une synchronisation de rattrapage immédiate, troisième voie d’entrée.
Le compromis que nous avons accepté : le regroupement plutôt que le temps réel
Les deux systèmes regroupent délibérément le travail d’arrière-plan. Si dix apps exigeaient chacune un réveil à la seconde où une donnée apparaît, les batteries reviendraient en 2010. iOS et Android groupent donc les tâches de fond et les exécutent de façon opportuniste, quand la radio est déjà allumée ou que le téléphone charge.
La conséquence, que nous préférons expliquer plutôt que cacher : une notification de badge peut arriver quelques minutes, parfois quelques heures, après le franchissement réel. Le badge, lui, est toujours daté au moment exact, car les données de pas portent leurs propres horodatages ; seule la célébration peut être en retard.
Nous aurions pu contourner cela avec des astuces qui maintiennent l’app artificiellement en vie. Certaines apps le font : sessions audio silencieuses, surveillance de localisation permanente, services de premier plan agressifs. Chacune de ces astuces finit sur votre écran de batterie avec votre nom dessus, et la plupart valent tôt ou tard un rejet des stores. Nous avons choisi le regroupement. Des confettis légèrement en retard, des années de batterie.
Pourquoi il y a un serveur, alors
Une question de conception mérite sa réponse : si le téléphone compte tout, pourquoi Everest a-t-il un serveur ? Pour qu’une réinstallation retrouve votre historique de badges sans compte, grâce à un identifiant d’appareil anonyme.
Ce que le serveur stocke est volontairement minimal : totaux quotidiens anonymes, badges débloqués, fuseau horaire et plateforme. Votre historique de pas minute par minute ne quitte jamais l’appareil ; le détail reste dans Apple Santé ou Health Connect, sous la protection du système, à sa place. La politique de confidentialité le détaille, et elle est courte précisément parce qu’il y a très peu à divulguer.
Résultat, mesuré sur nos propres téléphones pendant le développement : Everest n’apparaît tout simplement pas dans les premières lignes de l’écran de batterie. La montagne se gravit dans tous les cas ; le téléphone, lui, ne voit presque pas la différence.