Using Core Motion to Implement Step Tracking in Fitness Apps
Table of Contents
Compreender o papel do movimento principal no acompanhamento de passos
A estrutura Core Motion da Apple é a base para a construção de recursos precisos e eficientes de rastreamento de passos em aplicações de fitness iOS. Ao abstrair as complexidades dos dados brutos dos sensores do acelerômetro, giroscópio e pedômetro, o Core Motion fornece uma API unificada que permite aos desenvolvedores se concentrar na experiência do usuário em vez de processamento de sinal de baixo nível. Os aplicativos modernos de fitness dependem do Core Motion para fornecer contagens de passos em tempo real e históricos, estimativas de distância e até classificações de atividade – tudo respeitando a privacidade do usuário e desempenho do dispositivo.
No centro do rastreamento de passos está a classe CMPedômetro, que expõe a contagem de passos, distância, ritmo e dados de cadência sem exigir que os desenvolvedores interpretem diretamente os formatos de onda de acelerômetros. Isso simplifica a implementação e garante consistência em diferentes modelos do iPhone e Apple Watch. Se você está construindo um aplicativo de rastreamento de passos dedicado ou adicionando monitoramento de atividade a uma plataforma mais ampla orientada para a saúde, o Core Motion oferece as ferramentas para fornecer dados de pedômetro confiáveis em que os usuários podem confiar.
Componentes Principais para Rastreamento de Passos e Atividades
CMPedômetro – A Interface de Rastreamento de Passos Primária
A classe CMPedômetro é o componente de passo para obter dados de passo em aplicativos iOS. Fornece atualizações ao vivo e recursos históricos de consulta. As propriedades principais de incluem , , , , e [/. Estas métricas permitem que os desenvolvedores apresentem informações sobre atividade granular aos usuários.
Antes de utilizar o CMPedômetro, você deve verificar a disponibilidade com . Enquanto quase todos os dispositivos iOS modernos suportam a contagem de passos, modelos antigos ou Apple Watches sem um pedômetro integrado podem retornar . Uma implementação robusta irá lidar com esses casos graciosamente e fornecer um retorno adequado ou desativar o recurso.
CMMotionManager – Acesso de sensor bruto para casos de uso avançado
Embora o CMPedômetro seja suficiente para a maioria das necessidades de rastreamento de passos, CMMotionManager] dá aos desenvolvedores acesso ao acelerômetro, giroscópio e magnetômetro do dispositivo. Isso pode ser útil para algoritmos de detecção de passos personalizados, análise de marcha incomum, ou quando você precisa combinar dados de passos com leituras de orientação. No entanto, porque executar o CMMotionManager continuamente pode drenar a bateria, é melhor reservado para curtos surtos ou como um suplemento ao CMPedômetro quando é necessário dados brutos de alta precisão.
Note que o CMMotionManager não calcula automaticamente as contagens de passos; você deve implementar sua própria lógica de filtragem e contagem usando os valores brutos de aceleração. Esta abordagem é mais complexa e tipicamente só é justificada se você precisar ajustar a sensibilidade ou detectar passos em cenários não-walking (por exemplo, uso de cadeira de rodas).
Desprezo do CMStepCounter e da Migração
As versões anteriores do iOS usadas para o acompanhamento de passos, mas essa classe foi desactualizada no iOS 13. Todo o novo desenvolvimento deve usar CMPedômetro[ exclusivamente. Se você mantiver o código legado, migrar envolve substituir chamadas com os métodos equivalentes . As diferenças da API são menores: torna-se e torna-se . O modelo de dados é essencialmente o mesmo, tornando a migração simples.
Implementação do fluxo de trabalho de acompanhamento de passos
Verificando disponibilidade e Solicitando Permissões
Cada implementação de rastreamento de passos deve começar com uma verificação de suporte ao hardware e sistema. Use o método estático para verificar se o dispositivo pode fornecer dados de passos. Se os passos não estiverem disponíveis, mostre uma explicação clara para o usuário e desativa os elementos relevantes da interface.
A privacidade do usuário é crítica: o Core Motion solicita automaticamente permissão do usuário na primeira vez que seu aplicativo tentar acessar dados de movimento. Você deve incluir a chave no seu arquivo , fornecendo uma explicação concisa do porquê seu aplicativo precisa de dados de movimento. Sem essa chave, o sistema negará o acesso e suas chamadas falharão silenciosamente. Para integração com o HealthKit (veja seção posterior), você também precisa da chave .
Atualizações do Pedômetro Inicial em Tempo Real
Para receber atualizações ao vivo, ligue para . O parâmetro é tipicamente a data e hora atuais. O bloco do manipulador é invocado cada vez que novos dados do passo estiverem disponíveis. Dentro do manipulador, verifique sempre se há erros primeiro – por exemplo, se o usuário negou permissão, o erro conterá ou similar. Então, desembrulhe o objeto com segurança e atualize seu UI ou modelo de dados.
Um padrão comum é criar uma instância [[FLT: 25]] como uma propriedade do seu controlador de visão ou classe de gerenciador, e iniciar atualizações quando a tela relevante aparecer. Por exemplo:
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"
}
}
As atualizações em tempo real são ideais para a construção de contadores de passos ao vivo ou integração com sessões de treino. No entanto, podem ser com fome de energia se forem deixadas indefinidamente. Certifique-se de parar as atualizações quando o usuário navegar para longe da visualização de rastreamento ou quando o aplicativo entrar no fundo (a menos que você tenha capacidade de fundo).
Consultando dados históricos
Além das atualizações ao vivo, o CMPedômetro pode recuperar a contagem de passos para qualquer intervalo de tempo usando . Isto é útil para exibir resumos diários, semanais ou mensais. A consulta executa assíncrona e retorna os dados agregados para o período especificado. Observe que o sistema pode limitar a granularidade dos dados históricos, especialmente para datas distantes no passado, e a propriedade de distância pode estar indisponível se o coprocessador de movimento do dispositivo não estiver ativo.
Para evitar estrangulamentos de desempenho, limite as consultas a janelas de tempo razoáveis (por exemplo, não mais do que uma semana de cada vez) e faça a cache dos resultados se a sua aplicação mostrar frequentemente gráficos históricos. Você também pode combinar as consultas de Moção Core com as leituras do HealthKit para uma imagem mais completa.
Parando as atualizações para preservar a vida útil da bateria
Ligue sempre para a sua instância de pedómetro quando já não precisar de dados ao vivo. A falha em parar as actualizações pode drenar a bateria e conduzir a reclamações do utilizador. Amarre o ciclo de vida da actualização à vista do seu controlador de visualização – desaparecerá ou deinit methods. Para aplicações que necessitem de acompanhamento contínuo em segundo plano (por exemplo, um walk-tracker), habilite o e considere usar o em conjunto com os modos de execução de fundo. Repare que as actualizações do Core Motion não exigem que a aplicação esteja em primeiro plano, mas o sistema ainda impõe limitações para preservar a bateria.
Manipulação de Erros e Casos de Contorno
Compatibilidade com o dispositivo e Calibração do sensor de movimento
Nem todos os dispositivos iOS têm as mesmas capacidades de sensor de movimento. iPhone 5s e depois incluem um coprocessador de movimento da Apple M-série que descarrega cálculos de pedômetro da CPU principal, mas o comportamento exato pode diferir. Por exemplo, o iPhone SE (1a geração) suporta a contagem de passos, enquanto o iPod touch (6a geração) não. Verifique sempre a disponibilidade e teste em várias famílias de dispositivos.
Os sensores de movimento ocasionalmente requerem calibração. O Core Motion lida com isso automaticamente, mas as primeiras atualizações após um reinicialização do dispositivo podem ser ligeiramente menos precisas. Na prática, isso raramente é perceptível, mas você deve evitar descartar dados que se desviam ligeiramente dos valores esperados. Em vez disso, confie nos filtros embutidos da plataforma.
Gerenciando Interrupções e Atualizações de Fundo
Se o seu aplicativo for para o fundo, o Core Motion pode suspender temporariamente as atualizações. Ao iniciar o processo, você precisará reiniciar as atualizações do pedômetro. Para fornecer uma experiência perfeita, consulte o último ponto de dados conhecido de uma data gravada antes da interrupção e ligue para para preencher o espaço. Esta abordagem garante que não se percam passos enquanto o aplicativo estiver inativo.
Para aplicativos associados ao watchOS, os dados do pedômetro são sincronizados automaticamente através do coprocessador de movimento do Apple Watch, mas o aplicativo iOS deve consultar explicitamente o próprio pedômetro do dispositivo – ele não recebe automaticamente passos registrados no relógio. A integração com o HealthKit (discussionado mais tarde) resolve esse problema de sincronização.
Melhores Práticas para Desempenho e Privacidade
Otimizando bateria e processamento Overhead
Para minimizar o dreno da bateria, siga estas diretrizes:
- Use CMPedômetro em vez de CMMotionManager para contagem de passos; o pedômetro é otimizado por hardware.
- Inicie atualizações apenas quando o usuário explicitamente permite o rastreamento de passos ou começa um treino.
- Pare as atualizações imediatamente quando a tela de rastreamento desaparecer ou o treino terminar.
- Para a contagem passiva de passos (por exemplo, sempre no passo total), considere usar o HealthKit para ler as etapas registradas pelo sistema – o pedômetro do próprio sistema funciona de forma eficiente em segundo plano.
- Cache dados históricos localmente para evitar consultas repetidas ao longo dos intervalos de tempo mesmos.
Conformidade com a privacidade e tratamento de dados
Os dados de passos são considerados informações de saúde sensíveis. A Apple aplica regras de privacidade estritas:
- Sempre inclua o texto ; falha ao fazê-lo faz com que a janela de permissão não apareça.
- Nunca compartilhe dados de passos com análises de terceiros ou redes de anúncios sem o consentimento explícito do usuário.
- Se você armazenar dados de passo em um servidor, criptografe-os em trânsito e em repouso, e forneça uma maneira para os usuários excluirem seus dados.
- Respeite a decisão do usuário de revogar a permissão; seu aplicativo deve lidar com o erro graciosamente e desativar as funcionalidades de rastreamento de passos.
Integrando-se com a Apple Health via HealthKit
Lendo e escrevendo Passo de Dados para HealthKit
Para uma solução de fitness abrangente, combine o Core Motion com HealthKit. Enquanto o Core Motion fornece dados em tempo real, o HealthKit serve como repositório centralizado para todas as métricas de saúde. Você pode ler as contagens de passos escritas por outros aplicativos ou pelo próprio sistema, e você pode escrever seus próprios dados de passo no HealthKit para compartilhar com o registro de saúde do usuário.
Para escrever as etapas, crie uma do tipo e salve-a usando . Sempre solicite a autorização chamando perto do lançamento da aplicação. Esteja ciente de que ambas as permissões do Core Motion e HealthKit devem ser concedidas separadamente.
Mantendo Sincronizado os Dados Passos
Ao ler os passos históricos, pode utilizar os passos de do HealthKit para resumir os passos ao longo de um período. Isto pode servir como um recuo se as consultas com o CMPedómetro falharem ou se quiser combinar dados de passos de um Apple Watch. Para evitar a dupla contagem, adopte uma estratégia: ou confia no Core Motion para armazenamento em tempo real e no HealthKit para armazenamento a longo prazo, ou sempre lê do HealthKit e ignora as consultas históricas do Core Motion. A maioria dos aplicativos de saúde escolhem o último para consistência entre dispositivos.
Melhorias de acompanhamento avançado de passos
Classificação de Atividade com Movimento Principal
A do Core Motion pode classificar o estado atual de movimento do usuário – por exemplo, estacionário, andando, correndo, pedalando ou dirigindo. Combinando isso com dados de passos permite que seu aplicativo apresente feedback consciente do contexto, como “Você tem andado por 10 minutos” versus “Você ainda está andando”. Use o método e correlacione o tipo de atividade com dados de pedômetro para análises mais ricas.
Medições de Pacing e Cadence da Pedômetro Data
As propriedades e ] fornecem métricas instantâneas de caminhada ou execução. O ritmo é estimado em segundos por metro, e a cadência é o número de passos por segundo. Estes valores são úteis para construir painéis que mostram a intensidade atual do treino do usuário. Note que essas propriedades podem ser nulas quando o dispositivo não consegue estimar de forma confiável (por exemplo, quando o usuário está se movendo muito lentamente).
Combinando dados de Accelerômetro para precisão de passo
Se você achar que os filtros embutidos do CMPedômetro falham etapas durante certas atividades (por exemplo, escadas subindo com corrimãos), você pode suplementá-lo com dados brutos de acelerômetro de ]. Implemente um algoritmo de detecção de passos simples usando um filtro passa-baixo na magnitude da aceleração e um limiar de detecção de pico. No entanto, o pedômetro da Apple deve ser suficientemente preciso para a grande maioria dos casos de uso – o processamento de sensores brutos raramente é necessário.
Considerações e Testes do Mundo Real
Testes em diferentes modelos de iPhone e versões iOS
O comportamento de rastreamento de passos pode variar entre os dispositivos. Teste seu aplicativo em pelo menos essas configurações:
- iPhone 6s ou mais velhos (sem coprocessador M9? Na verdade, todos os iPhones 5s e depois têm coprocessadores de movimento, mas os mais velhos podem ter dados menos precisos).
- iPhone 8 ou posterior (coprocessadores mais recentes).
- iPhone com iOS 13+ (protege a API mais recente).
- iPad (alguns modelos iPad têm pedômetros, mas muitos não).
Use o console on-device para registrar mensagens de erro e verificar se sua disponibilidade verifica corretamente. Considere usar um passeio de teste baseado em hardware (por exemplo, 100 passos contados manualmente) para validar a saída do aplicativo.
Validando a precisão da contagem de passos
Nenhum pedômetro é 100% preciso. Para definir as expectativas do usuário, publique uma faixa de precisão típica (por exemplo, “a precisão varia por dispositivo, mas o erro típico está dentro de 5%”). Durante o desenvolvimento, compare as contagens de passos de seu aplicativo com uma linha de base conhecida como a aplicação Saúde integrada. Para testes de regressão, automatize a caminhada com uma tabela de tremores (se disponível) ou use sequências de testes manuais.
Construindo um rastreador de passo pronto para produção com o Core Motion
A implementação do acompanhamento de passos com o Core Motion é um processo simples quando você segue as diretrizes da Apple. Comece com CMPedômetro para contagens de passos, adicione CMMotionActivityManager[ para contexto, integre com HealthKit[ para armazenamento de longo prazo e sincronização entre dispositivos, e respeite sempre a privacidade do usuário. Teste em várias famílias de dispositivos e versões iOS para garantir um comportamento consistente.
Para mais leitura, consulte a documentação oficial da Apple:
- Core Motion Framework – visão geral e referência.
- CMPedómetro Referência da classe – descrições detalhadas da API.
- HealthKit Framework – integrando dados de etapa com a base de dados de saúde.
- CMMotionActivityManager – classificação de atividade.
- Garantindo a disponibilidade da contagem de passos – documentação para verificar o suporte ao hardware.
Ao aproveitar as APIs otimizadas do Core Motion e aderir às melhores práticas da Apple, você pode oferecer uma experiência de rastreamento de passos que seja precisa, amigável com bateria e respeitosa da privacidade do usuário – uma combinação crítica para qualquer aplicativo de fitness bem sucedido.