Table of Contents

Comprender el papel de la moción básica en el seguimiento de pasos

El marco de movimiento básico de Apple es la base para crear características precisas y eficientes de la batería en aplicaciones de fitness iOS. Al abstraer las complejidades de los datos de sensores crudos del acelerómetro, giroscopio y pódulo, Core Motion proporciona una API unificada que permite a los desarrolladores centrarse en la experiencia de usuario en lugar de procesamiento de señales de bajo nivel.

En el corazón del seguimiento de pasos está la clase CMPedometer, que expone los datos de cuenta, distancia, ritmo y cadencia de pasos sin exigir a los desarrolladores que interpreten directamente las formas de onda acelerómetro. Esto simplifica la implementación y garantiza la coherencia en diferentes modelos de iPhone y Apple Watch. Ya sea que usted está construyendo una aplicación de seguimiento de actividades dedicadas a una plataforma de medición más amplia.

Componentes básicos para el seguimiento de pasos y actividades

CMPedometer – La interfaz de seguimiento de pasos primarios

La clase de es el componente de ir a obtener datos de paso en las aplicaciones iOS. Proporciona actualizaciones en vivo y capacidades de consulta histórica. Las propiedades clave de incluyen , ], ] [FLT[5] [FLT] [4]

Antes de usar CMPedometer, debe comprobar la disponibilidad con . Mientras que casi todos los dispositivos iOS modernos soportan la cuenta de pasos, los modelos antiguos o Apple Watches sin un pedometer incorporado pueden regresar . Una aplicación robusta manejará con gracia estos casos y proporcionará una devolución adecuada o deshabilitará la característica.

CMMotionManager – Acceso a sensores brutos para casos de uso avanzado

Mientras que CMPedometer es suficiente para la mayoría de las necesidades de seguimiento paso, CMMotionManager da acceso a los desarrolladores al acelerómetro, giroscopio y magnetómetro del dispositivo. Esto puede ser útil para algoritmos de detección paso personalizados, análisis de gait inusual, o cuando necesita combinar datos paso a lecturas de orientación.

Tenga en cuenta que CMMotionManager no calcula automáticamente los pasos contados; debe implementar su propia lógica de filtrado y conteo usando los valores de aceleración cruda. Este enfoque es más complejo y normalmente sólo se justifica si necesita sintonizar la sensibilidad o detectar pasos en escenarios no caminantes (por ejemplo, uso de silla de ruedas).

Deprecation of CMStepCounter and Migration

Las versiones anteriores de iOS se utilizaron para el seguimiento de pasos, pero esa clase fue deprecatada en iOS 13. Todo nuevo desarrollo debe utilizar CMPedómetro exclusivamente. Si mantienes el código hereditario, la migración implica reemplazar llamadas por los métodos equivalentes .

Implementación del flujo de trabajo de seguimiento de pasos

Comprobación de disponibilidad y solicitudes de permisos

Cada aplicación de seguimiento paso debe comenzar con un cheque para soporte de hardware y sistema. Utilice el método estático para verificar que el dispositivo puede proporcionar datos de paso. Si los pasos no están disponibles, muestre una explicación clara al usuario y desactive los elementos de interfaz de usuario pertinentes.

La privacidad de los usuarios es crítica: Core Motion solicita automáticamente permiso del usuario la primera vez que su aplicación intenta acceder a los datos de movimiento. Debe incluir la clave en su archivo , proporcionando una explicación concisa de por qué su aplicación necesita datos de movimiento. Sin esta clave, el sistema negará el acceso y sus llamadas fallarán silenciosamente. Para la integración de HealthKit (ver sección posterior), también necesita la [[FLT]

Actualizaciones de Pedometer en tiempo real

Para recibir actualizaciones de pasos en vivo, llame . El parámetro es típicamente la fecha y hora actuales. El bloque de manipuladores se invoca cada vez que se dispone de nuevos datos de paso. Dentro del manejador, siempre busque errores primero – por ejemplo, si el usuario niega permiso, el error contendrá o similar. Luego, desactivar con seguridad el objeto y actualización.

Un patrón común es crear una instancia como propiedad de su controlador de visión o clase de gerente, y comenzar actualizaciones cuando aparece la pantalla relevante. Por ejemplo:

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"
 }
}

Las actualizaciones en tiempo real son ideales para construir contadores de pasos en vivo o integrarse con sesiones de entrenamiento. Sin embargo, pueden ser de alta potencia si se deja correr indefinidamente. Asegúrese de parar las actualizaciones cuando el usuario navega lejos de la vista de seguimiento o cuando la aplicación entra en el fondo (a menos que tenga capacidad de fondo).

Datos históricos de paso

Además de las actualizaciones en vivo, CMPedometer puede recuperar los recuentos de pasos para cualquier rango de tiempo utilizando . Esto es útil para mostrar resúmenes diarios, semanales o mensuales. La consulta funciona de forma asincrónica y devuelve los datos agregados para el período especificado. Tenga en cuenta que el sistema puede limitar la granularidad de datos históricos, especialmente para las fechas de lejos, y la propiedad de distancia puede ser inaccesible si el dispositivo activo no disponible

Para evitar los cuellos de botella de rendimiento, limite las consultas a las ventanas de tiempo razonables (por ejemplo, no más de una semana a la vez) y haga clic en los resultados si su aplicación muestra frecuentemente gráficos históricos. También puede combinar las consultas de Core Motion con HealthKit lee para una imagen más completa.

Actualizaciones de desperdicio para preserve batería vida

Siempre llame en su caso de pedometer cuando ya no necesite datos en vivo. El no poder parar las actualizaciones puede drenar la batería y llevar a las quejas de usuario. Asegúrese de que el ciclo de vida actualizado a los métodos de vista del controlador de visión-desaparecerá o desinito. Para aplicaciones que requieren seguimiento continuo en el fondo (por ejemplo, un monitor de paseo), active y considere las limitaciones de ejecución

Manejo de errores y casos de borde

Compatibilidad de dispositivos y calibración del sensor de movimiento

No todos los dispositivos iOS tienen las mismas capacidades de detección de movimiento. iPhone 5s e incluyen un coprocesador de movimiento de serie M de Apple que descarga cálculos de pódulos de la CPU principal, pero el comportamiento exacto puede diferir. Por ejemplo, el iPhone SE (1a generación) admite la cuenta de pasos, mientras que el iPod touch (6a generación) no lo hace. Siempre comprueba la disponibilidad y prueba en varias familias de dispositivos.

Los sensores de movimiento ocasionalmente requieren calibración. La moción de núcleo maneja esto automáticamente, pero las primeras pocas actualizaciones después de un reinicio de dispositivo pueden ser ligeramente menos precisas. En la práctica, esto es raramente notable, pero debe evitar deshacerse de datos que se desvían ligeramente de los valores esperados. En lugar, confíe en los filtros incorporados de la plataforma.

Gestión de Interrupciones y Actualizaciones de Antecedentes

Si su aplicación va al fondo, Core Motion puede suspender temporalmente las actualizaciones. Al primer plano, tendrá que reiniciar las actualizaciones del pedometer. Para proporcionar una experiencia perfecta, consulta el último punto de datos conocido desde un timetamp guardado antes de la interrupción, y llame para llenar la brecha. Este enfoque asegura que no se pierdan pasos mientras la aplicación estaba inactiva.

Para aplicaciones de acompañamiento de watchOS, los datos del pedometer se sincronizan automáticamente a través del coprocesador de movimiento de Apple Watch, pero su aplicación iOS debe consultar explícitamente el propio pedometer del dispositivo – no recibe automáticamente los pasos registrados en el reloj. La integración de HealthKit (desconocido más adelante) resuelve este problema de sincronización.

Mejores prácticas para el rendimiento y la privacidad

Optimización de batería y procesamiento de sobrecabeza

Para minimizar el desagüe de batería, siga estas pautas:

  • Use CMPedometer] en lugar de CMMotionManager para el recuento de pasos; el pedometer es hardware optimizado.
  • Comience actualizaciones sólo cuando el usuario permite explícitamente el seguimiento del paso o comienza un entrenamiento.
  • Detén las actualizaciones inmediatamente cuando la pantalla de seguimiento desaparece o el entrenamiento termina.
  • Para la contabilidad pasiva de pasos (por ejemplo, siempre a paso total), considere utilizar HealthKit para leer los pasos registrados por el sistema – el propio medidor del sistema funciona de manera eficiente en el fondo.
  • Cosecha datos históricos localmente para evitar consultas repetidas a lo largo del mismo tiempo rangos.

Cumplimiento de la privacidad y manejo de datos

Los datos de paso se consideran información de salud sensible. Apple aplica reglas estrictas de privacidad:

  • Siempre incluye la cadena ; el fracaso para hacerlo hace que el diálogo de permiso no aparezca.
  • Nunca comparta los datos de paso con analíticas o redes de anuncios de terceros sin el consentimiento explícito del usuario.
  • Si almacena datos paso en un servidor, encripte en tránsito y en reposo, y proporciona una manera para que los usuarios borren sus datos.
  • Respetar la decisión del usuario de revocar el permiso; su aplicación debe manejar el error con gracia y deshabilitar las funciones de seguimiento paso.

Integrando con Apple Health vía HealthKit

Leer y escribir datos paso a HealthKit

Para una solución de fitness integral, combina la movilidad básica con HealthKit]. Mientras que Core Motion proporciona datos en tiempo real, HealthKit sirve como depósito centralizado para todas las métricas de salud. Puedes leer los recuentos de pasos escritos por otras aplicaciones o el propio sistema, y puedes escribir tus propios datos de paso en HealthKit para compartir con el registro de salud del usuario.

Para escribir pasos, crear un de tipo y guardarlo utilizando . Siempre solicite la autorización llamando cerca del lanzamiento de aplicaciones. Tenga en cuenta que tanto los permisos de movimiento básico como de HealthKit deben ser concedidos por separado.

Mantener los datos de paso sincronizados

Al leer pasos históricos, puede utilizar HealthKit para resumir pasos durante un período. Esto puede servir como un inconveniente si las consultas CMPedometer fallan o si desea combinar datos paso de un Apple Watch. Para evitar la doble cuenta, adoptar una estrategia: ya sea confiar en la Moción Core para el almacenamiento en tiempo real y HealthKit para el almacenamiento a largo plazo, o siempre leer desde HealthKit e ignorar que Core

Mejoras de seguimiento avanzados

Clasificación de la actividad con la moción básica

El estado actual del movimiento del usuario (por ejemplo, estacionario, caminando, corriendo, ciclismo o conduciendo). Combinando esto con datos de paso permite que su aplicación presente información contextual, como “Has estado caminando durante 10 minutos” contra “Todavía estás ciclándose”. Utilice el método y correlacione el tipo de actividad con el analímetro rico.

Medición de Pacing y Cadence de los Datos del Pedometer

Las propiedades y en proporcionan métricas de caminar o de funcionamiento instantáneas. El par se calcula en segundos por metro, y la cadencia es el número de pasos por segundo. Estos valores son útiles para la construcción de paneles que muestran la intensidad de entrenamiento actual del usuario. Tenga en cuenta que estas propiedades pueden ser nulas cuando el dispositivo no puede estimarse muy (en).

Combinar datos de acelerometros para la precisión de paso

Si encuentras que los filtros incorporados de CMPedometer pierden pasos durante ciertas actividades (por ejemplo, escalada de escaleras con pasamanos), puedes complementarlo con datos de acelerómetro crudos de . Implementa un algoritmo de detección simple paso usando un filtro de baja velocidad en la magnitud de la aceleración y un umbral de máxima detección. Sin embargo, el pedometer de Apple raramente debe ser suficiente

Consideraciones y pruebas en el mundo real

Pruebas en diferentes modelos de iPhone y versiones de iOS

El comportamiento de seguimiento puede variar a través de dispositivos. Pruebe su aplicación en al menos estas configuraciones:

  • iPhone 6s o más (sin el coprocesador M9? En realidad todos los iPhones 5s y más tarde tienen coprocesadores de movimiento, pero los más antiguos pueden tener datos menos precisos).
  • iPhone 8 o posterior (coprocesadores de más reciente).
  • iPhone con iOS 13+ (asegura la última API).
  • iPad (algunos modelos iPad tienen péndulos, pero muchos no).

Utilice la consola de dispositivo para registrar mensajes de error y verificar que sus cheques de disponibilidad funcionan correctamente. Considere el uso de una caminata de prueba basada en hardware (por ejemplo, 100 pasos contados manualmente) para validar la salida de su aplicación.

Validación de la precisión de paso

Para establecer las expectativas de los usuarios, publicar un rango de precisión típico (por ejemplo, “la precisión varía según el dispositivo, pero el error típico es del 5%”). Durante el desarrollo, compare los recuentos de pasos de su aplicación contra una base conocida como la aplicación de salud integrada. Para la prueba de regresión, automatizar caminar con una tabla de sacudido (si está disponible) o utilizar secuencias de prueba manuales.

Construyendo un Tracker de Pasos de Producción con Moción Core

Implementar el seguimiento paso con Core Motion es un proceso directo cuando sigue las directrices de Apple. Comience con CMPedometer para los recuentos de pasos, agregue CMMotionActivityManager para el contexto, integre con HealthKit

Para más lectura, consulte la documentación oficial de Apple:

Al aprovechar las API optimizadas de Core Motion y adherirse a las mejores prácticas de Apple, puede ofrecer una experiencia de seguimiento gradual que sea precisa, amigable con batería y respetuosa de la privacidad de los usuarios, una combinación crítica para cualquier aplicación de fitness exitosa.