Table of Contents
Comprendre le rôle du mouvement central dans le suivi des étapes
En abstractionnant la complexité des données brutes des capteurs à partir de l'accéléromètre, du gyroscope et du pédomètre, Core Motion fournit une API unifiée qui permet aux développeurs de se concentrer sur l'expérience utilisateur plutôt que sur le traitement de signaux de bas niveau. Les applications de fitness modernes comptent sur Core Motion pour fournir des comptes en temps réel et des comptes d'étapes historiques, des estimations de distance et même des classifications d'activités, tout en respectant la confidentialité des utilisateurs et les performances des appareils.
Au cœur du suivi des étapes se trouve la classe CMPedomètre, qui expose les données de comptage, de distance, de rythme et de cadence sans exiger des développeurs qu'ils interprètent directement les formes d'onde de l'accéléromètre. Ceci rationalise l'implémentation et assure la cohérence entre les différents modèles iPhone et Apple Watch. Que vous construisiez une application de suivi des étapes ou ajoutiez une surveillance d'activités à une plateforme plus large axée sur la santé, Core Motion offre les outils pour fournir des données de pédomètres fiables dont les utilisateurs peuvent avoir confiance.
Composantes de base pour le suivi des étapes et des activités
CMPedomètre – L'interface de suivi des étapes principales
La classe CMPedomètre est le composant de passage pour obtenir des données étape dans les applications iOS. Elle fournit des mises à jour en direct et des capacités de requête historiques. Les propriétés clés de incluent , , , , et [/. Ces mesures permettent aux développeurs de présenter aux utilisateurs des informations sur les activités granulaires.
Avant d'utiliser le CMPedomètre, vous devez vérifier la disponibilité avec . Alors que presque tous les appareils iOS modernes supportent le comptage des étapes, les modèles plus anciens ou Apple Watches sans pédomètre intégré peuvent retourner . Une implémentation robuste gérera gracieusement ces cas et fournira un retour approprié ou désactivera la fonctionnalité.
CMMotionManager – Accès aux capteurs bruts pour les cas d'utilisation avancée
Bien que le CMPedomètre soit suffisant pour la plupart des besoins de suivi par étapes, CMMotionManager donne aux développeurs accès à l'accéléromètre, au gyroscope et au magnétomètre de l'appareil. Cela peut être utile pour des algorithmes de détection par étapes personnalisés, une analyse de démarche inhabituelle ou lorsque vous devez combiner les données par étapes avec les lectures d'orientation.
Notez que CMMotionManager ne calcule pas automatiquement les nombres d'étapes; vous devez implémenter votre propre logique de filtrage et de comptage en utilisant les valeurs d'accélération brutes. Cette approche est plus complexe et généralement justifiée seulement si vous devez régler la sensibilité ou détecter les étapes dans des scénarios non marchants (p. ex., utilisation d'un fauteuil roulant).
Déprécation de CMStepCounter et migration
Les versions iOS utilisées précédemment pour le suivi des étapes, mais cette classe a été dépréciée dans iOS 13. Tout nouveau développement devrait utiliser CMPedomètre exclusivement. Si vous maintenez le code legs, la migration implique de remplacer les appels par les méthodes équivalentes . Les différences d'API sont mineures : devient , et devient . Le modèle de données est essentiellement le même, rendant la migration simple.
Mise en oeuvre du flux de travail de suivi des étapes
Vérification de la disponibilité et demande de permissions
Chaque implémentation de suivi des étapes doit commencer par une vérification du support matériel et système. Utilisez la méthode statique pour vérifier que l'appareil peut fournir des données de suivi des étapes. Si les étapes ne sont pas disponibles, affichez une explication claire à l'utilisateur et désactivez les éléments d'interface utilisateur pertinents.
La confidentialité de l'utilisateur est critique : Core Motion demande automatiquement la permission de l'utilisateur la première fois que votre application tente d'accéder aux données de mouvement. Vous devez inclure la touche dans votre fichier , fournissant une explication concise de la raison pour laquelle votre application a besoin de données de mouvement. Sans cette clé, le système refusera l'accès et vos appels échoueront silencieusement.
Mises à jour du podomètre en temps réel
Pour recevoir les mises à jour en direct, appelez . Le paramètre est généralement la date et l'heure actuelles. Le bloc de gestionnaire est invoqué chaque fois que de nouvelles données sont disponibles. Dans le gestionnaire, vérifiez toujours les erreurs en premier – par exemple, si l'utilisateur refuse la permission, l'erreur contiendra ou similaire. Ensuite, débarrassez en toute sécurité l'objet et mettez à jour votre modèle d'interface utilisateur ou de données.
Un motif courant est de créer une instance en tant que propriété de votre contrôleur de vue ou classe gestionnaire, et de commencer les mises à jour lorsque l'écran pertinent apparaît. Par exemple:
let pedometer = CMPedometer()
pedometer.startUpdates(from: Date()) { (data, error) in
guard let data = data, error == nil else { return }
DispatchQueue.main.async {
self.stepCountLabel.text = "\(data.numberOfSteps) steps"
}
}
Les mises à jour en temps réel sont idéales pour construire des compteurs en direct ou s'intégrer aux séances d'entraînement. Cependant, elles peuvent être ennuyeuses si elles sont laissées en cours indéfiniment. Assurez-vous d'arrêter les mises à jour lorsque l'utilisateur navigue loin de la vue de suivi ou lorsque l'application entre dans l'arrière-plan (sauf si vous avez une capacité de fond).
Interroger les données historiques sur les étapes
En plus des mises à jour en direct, le CMPedomètre peut récupérer les comptes d'étapes pour n'importe quelle plage de temps en utilisant . Ceci est utile pour afficher des résumés quotidiens, hebdomadaires ou mensuels. La requête fonctionne asynchronement et renvoie les données agrégées pour la période spécifiée. Notez que le système peut limiter la granularité des données historiques, en particulier pour les dates lointaines dans le passé, et la propriété distance peut être indisponible si le coprocesseur de mouvement de l'appareil n'était pas actif.
Pour éviter les goulets d'étranglement, limitez les requêtes à des fenêtres de temps raisonnables (par exemple, pas plus d'une semaine à la fois) et cachez les résultats si votre application affiche fréquemment des graphiques historiques. Vous pouvez également combiner les requêtes Core Motion avec HealthKit lit pour une image plus complète.
Mises à jour pour arrêter de préserver la vie des batteries
Toujours appeler sur votre instance de podomètre lorsque vous n'avez plus besoin de données en direct. L'échec des mises à jour peut épuiser la batterie et entraîner des plaintes des utilisateurs. Attachez le cycle de vie de mise à jour à votre contrôleur de vue. Les méthodes de vue-will-disparaissent ou deinit. Pour les applications qui nécessitent un suivi continu en arrière-plan (p. ex., un tracker-walk), activez le et envisagez d'utiliser le en conjonction avec les modes d'exécution de fond. Notez que les mises à jour de Core Motion n'exigent pas que l'application soit au premier plan, mais le système impose toujours des limites pour préserver la batterie.
Traitement des erreurs et des cas d'Edge
Compatibilité des appareils et calibration des capteurs de mouvement
Les appareils iOS n'ont pas tous les mêmes capacités de détection de mouvement. iPhone 5s et plus tard incluent un coprocesseur de mouvement Apple M-série qui décharge les calculs du pedomètre à partir du processeur principal, mais le comportement exact peut différer. Par exemple, l'iPhone SE (1ère génération) supporte le comptage étape, tandis que l'iPod touch (6ème génération) ne le fait pas. Vérifiez toujours la disponibilité et testez sur plusieurs familles d'appareils.
Les capteurs de mouvement nécessitent parfois un calibrage. Core Motion s'en charge automatiquement, mais les premières mises à jour après un redémarrage d'un appareil peuvent être légèrement moins précises. En pratique, cela est rarement perceptible, mais vous devriez éviter de jeter des données qui s'écartent légèrement des valeurs attendues.
Gestion des interruptions et des mises à jour de base
Si votre application entre en arrière-plan, Core Motion peut suspendre temporairement les mises à jour. Au premier plan, vous devrez redémarrer les mises à jour du podomètre. Pour fournir une expérience transparente, interrogez le dernier point de données connu d'un horodatage enregistré avant l'interruption et appelez pour combler l'écart. Cette approche garantit qu'aucune étape n'est perdue pendant que l'application était inactive.
Pour les applications de horlogère, les données du podomètre sont synchronisées automatiquement via le coprocesseur de mouvement Apple Watchs, mais votre application iOS doit explicitement interroger le propre podomètre de l'appareil – il ne reçoit pas automatiquement les étapes enregistrées sur la montre. L'intégration HealthKit (discutée plus tard) résout ce problème de synchronisation.
Meilleures pratiques en matière de performance et de protection de la vie privée
Optimisation de la batterie et du traitement des déchets
Pour réduire au minimum le drain de la batterie, suivez les directives suivantes :
- Utilisez CMPedomètre plutôt que CMMotionManager pour le comptage par étapes; le pédomètre est optimisé matériellement.
- Démarrer les mises à jour seulement lorsque l'utilisateur permet explicitement le suivi des étapes ou commence une séance d'entraînement.
- Arrêtez immédiatement les mises à jour lorsque l'écran de suivi disparaît ou que l'entraînement se termine.
- Pour le comptage passif des étapes (p. ex., toujours sur le total des étapes), envisagez d'utiliser HealthKit pour lire les étapes enregistrées par le système – le système propre pédomètre fonctionne efficacement en arrière-plan.
- Cache données historiques localement pour éviter les requêtes répétées sur les mêmes plages de temps.
Respect de la vie privée et traitement des données
Les données étape sont considérées comme des informations de santé sensibles. Apple applique des règles strictes de confidentialité:
- Inclure toujours la chaîne ; l'omission de le faire fait que la boîte de dialogue de permission n'apparaît pas.
- Ne jamais partager des données pas avec des réseaux tiers d'analyse ou de publicité sans le consentement explicite de l'utilisateur.
- Si vous stockez des données étape sur un serveur, chiffrez-les en transit et au repos, et offrez un moyen aux utilisateurs de supprimer leurs données.
- Respectez la décision de l'utilisateur de révoquer la permission; votre application doit gérer l'erreur gracieusement et désactiver les fonctionnalités de suivi des étapes.
Intégration à Apple Health via HealthKit
Lecture et rédaction de données étape à SantéKit
Pour une solution de fitness complète, combinez Core Motion avec HealthKit. Bien que Core Motion fournisse des données en temps réel, HealthKit sert de dépôt centralisé pour toutes les mesures de santé. Vous pouvez lire les comptes d'étape écrits par d'autres applications ou le système lui-même, et vous pouvez écrire vos propres données d'étape dans HealthKit pour partager avec l'utilisateur.
Pour écrire des étapes, créez de type et enregistrez-le en utilisant . Demandez toujours l'autorisation en appelant à proximité du lancement de l'application.
Synchronisation des données des étapes
Lorsque vous lisez des étapes historiques, vous pouvez utiliser HealthKit=38 pour résumer les étapes sur une période. Cela peut être un retour en arrière si les requêtes CMPedomètre échouent ou si vous voulez combiner des données d'étape d'une Apple Watch. Pour éviter le double comptage, adoptez une stratégie : soit vous fiez à Core Motion pour le temps réel et HealthKit pour le stockage à long terme, soit vous lisez toujours à partir de HealthKit et ignorez Core Motion=3 les requêtes historiques.
Améliorations avancées du suivi des étapes
Classification des activités avec motion fondamentale
Les mouvements de base peuvent classer l'état de mouvement actuel de l'utilisateur – par exemple, stationnaire, marchant, courant, vélo ou conduite. Combiner cela avec des données d'étape permet à votre application de présenter des commentaires contextuels, tels que -You=ve marchait pendant 10 minutes - versus -You=re toujours vélo. -Utilisez la méthode et corrélez le type d'activité avec les données du podomètre pour une analyse plus riche.
Mesure de la cadence et de la cadence à partir des données du podomètre
Les propriétés et dans fournissent des mesures instantanées de marche ou de course. Le pas est estimé en secondes par mètre, et la cadence est le nombre d'étapes par seconde. Ces valeurs sont utiles pour construire des tableaux de bord qui montrent l'intensité d'entraînement actuelle de l'utilisateur. Notez que ces propriétés peuvent être nulles lorsque l'appareil ne peut pas les estimer de façon fiable (par exemple, lorsque l'utilisateur se déplace très lentement).
Combiner les données de l'accélérateur pour l'exactitude des étapes
Si vous constatez que les filtres intégrés CMPedomètre échappent à certaines étapes pendant certaines activités (p. ex., montée d'escalier avec des barres de maintien), vous pouvez le compléter par des données brutes d'accéléromètres de . Mettre en œuvre un algorithme de détection par étapes simple utilisant un filtre passe-bas sur l'amplitude d'accélération et un seuil de détection de pointe.
Considérations et essais réels dans le monde
Tests sur différents modèles d'iPhone et versions iOS
Le comportement de suivi des étapes peut varier d'un appareil à l'autre. Testez votre application sur au moins ces configurations :
- iPhone 6s ou plus (sans coprocesseur M9? En fait tous les iPhones 5s et plus tard ont des coprocesseurs de mouvement, mais les plus anciens peuvent avoir des données moins précises).
- iPhone 8 ou plus (coprocesseurs plus récents).
- iPhone avec iOS 13+ (assure la dernière API).
- iPad (certains modèles iPad ont des podomètres, mais beaucoup ne le font pas).
Utilisez la console sur le périphérique pour enregistrer les messages d'erreur et vérifier que votre disponibilité vérifie le bon fonctionnement. Envisagez d'utiliser une marche de test basée sur le matériel (p. ex. 100 étapes comptées manuellement) pour valider votre sortie de l'application.
Validation de l'exactitude du décompte des étapes
Pour définir les attentes des utilisateurs, publiez une plage de précision typique (p. ex., l'exactitude varie selon les appareils, mais l'erreur typique se situe à 5 %). Pendant le développement, comparez les comptes d'étapes de votre application avec une bonne base de référence connue comme l'application Santé intégrée. Pour les tests de régression, automatisez la marche avec une table de tremblement (si disponible) ou utilisez des séquences de tests manuels.
Construire un traqueur d'étapes de production avec le mouvement de base
Mettre en œuvre le suivi des étapes avec Core Motion est un processus simple lorsque vous suivez les lignes directrices Apple. Commencez par CMPedomètre pour le comptage des étapes, ajoutez CMMotionActivityManager[ pour le contexte, intégrez-vous à HealthKit[ pour le stockage à long terme et la synchronisation entre les appareils, et respectez toujours la confidentialité des utilisateurs.
Pour plus de détails, consulter la documentation officielle d'Apple:
- Cadre de motion de base – aperçu et référence.
- Référence de la classe de compteur de la CMP[ – descriptions détaillées de l'API.
- HealthKit Framework – intégration des données en étape à la base de données sur la santé.
- CMMotionActivityManager[ – classification des activités.
- Ensuring Step Computing Availability – documentation pour vérifier le support matériel.
En tirant parti des API optimisées de Core Motion et en respectant les meilleures pratiques d'Apple, vous pouvez offrir une expérience de suivi par étapes qui est précise, facile à utiliser et respectueuse de la vie privée des utilisateurs – une combinaison critique pour toute application de fitness réussie.