Everest
Tous les articles

Comment nous synchronisons vos pas en arrière-plan sans vider la batterie

Publié le

Comment nous synchronisons vos pas en arrière-plan sans vider la batterie

Everest ne compte jamais les pas lui-même : votre téléphone le fait déjà, sur une puce dédiée à très basse consommation. L’app se contente de lire les totaux quotidiens depuis Apple Santé ou Health Connect lors de courts réveils planifiés par le système, n’utilise aucun GPS, et n’envoie que quelques octets de totaux anonymes. Le coût en batterie est négligeable.

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é :

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.

FAQ

Everest utilise-t-il le GPS pour suivre mes balades ?

Non, jamais. Les pas sont comptés par le coprocesseur de mouvement intégré à votre téléphone. Everest lit les totaux depuis Apple Santé ou Health Connect ; l’app ne demande aucune permission de localisation.

Pourquoi ma notification de badge est-elle arrivée une heure après ma balade ?

iPhone et Android regroupent les tâches d’arrière-plan pour préserver la batterie : la synchronisation qui détecte un badge peut donc tourner quelques minutes ou heures après le franchissement réel du seuil. Le badge, lui, est toujours daté au moment exact du franchissement.

Faut-il garder l’app ouverte pour que mes pas comptent ?

Non. Votre téléphone compte les pas en permanence sur son propre matériel. Everest rattrape le retard à chaque synchronisation, que l’app soit ouverte ou fermée depuis des jours : aucun pas n’est jamais perdu.

À lire ensuite