Os wearables transformaram o monitoramento de saude. Apple Watch, Garmin, Whoop, Oura Ring e outros dispositivos coletam dados continuos de frequencia cardiaca, sono, atividade fisica, saturacao de oxigenio e muito mais. Este guia mostra como integrar esses dados aos seus apps e sistemas.
O ecossistema de dados de saude
Existem tres grandes ecossistemas de dados de saude em dispositivos moveis:
Apple HealthKit (iOS/watchOS): armazena todos os dados de saude e fitness do usuario no iPhone de forma centralizada. Qualquer app pode ler ou escrever dados com permissao explicita do usuario.
Google Health Connect (Android): equivalente ao HealthKit para Android, lancado em 2023 e tornando-se o padrao unificado, substituindo o antigo Google Fit API.
Garmin Health API / Fitbit API / Polar API: APIs proprias de cada fabricante de wearables, com dados mais ricos e especificos do hardware.
Apple HealthKit: integracao em React Native
Para um app de treino ou nutricao em iOS, a integracao com HealthKit e essencial:
import AppleHealthKit from “react-native-health”;
const PERMS = {
permissions: {
read: [
AppleHealthKit.Constants.Permissions.HeartRate,
AppleHealthKit.Constants.Permissions.Steps,
AppleHealthKit.Constants.Permissions.SleepAnalysis,
AppleHealthKit.Constants.Permissions.ActiveEnergyBurned,
AppleHealthKit.Constants.Permissions.BodyMass,
AppleHealthKit.Constants.Permissions.Vo2Max,
],
write: [
AppleHealthKit.Constants.Permissions.Workout,
AppleHealthKit.Constants.Permissions.BodyMass,
],
},
};
AppleHealthKit.initHealthKit(PERMS, (error) => {
if (error) {
console.error(“Erro ao acessar HealthKit:”, error);
return;
}
console.log(“HealthKit inicializado com sucesso”);
});
// Buscar frequencia cardiaca das ultimas 24h
const buscarBPM = () => {
const options = {
startDate: new Date(Date.now() – 86400000).toISOString(),
endDate: new Date().toISOString(),
ascending: false,
limit: 100,
};
AppleHealthKit.getHeartRateSamples(options, (err, results) => {
if (!err) {
const bpmMedio = results.reduce((a, b) => a + b.value, 0) / results.length;
console.log(`BPM medio ultimas 24h: ${bpmMedio.toFixed(0)}`);
}
});
};
Google Health Connect: integracao em React Native (Android)
import {
initialize,
requestPermission,
readRecords,
} from “react-native-health-connect”;
const inicializarHealthConnect = async () => {
await initialize();
const isGranted = await requestPermission([
{ accessType: “read”, recordType: “HeartRate” },
{ accessType: “read”, recordType: “Steps” },
{ accessType: “read”, recordType: “SleepSession” },
{ accessType: “write”, recordType: “ExerciseSession” },
]);
if (!isGranted.every((p) => p.granted)) {
console.error(“Permissoes de saude negadas”);
return;
}
};
const buscarPassos = async () => {
const today = new Date();
const yesterday = new Date(today.getTime() – 86400000);
const { records } = await readRecords(“Steps”, {
timeRangeFilter: {
operator: “between”,
startTime: yesterday.toISOString(),
endTime: today.toISOString(),
},
});
const totalPassos = records.reduce((sum, r) => sum + r.count, 0);
return totalPassos;
};
Garmin Connect API
A Garmin oferece uma API para desenvolvedores acessarem dados de saude e atividade de seus usuarios (com OAuth 2.0). Para acesso: developer.garmin.com/connect-api.
Dados disponiveis: atividades (corrida, ciclismo, natacao), sono, estresse, body battery, VO2max, dados de GPS das atividades, e metricas de saude em geral.
O fluxo OAuth e padrao, e a resposta vem em JSON com os dados das atividades.
Whoop API
O Whoop, popular entre atletas de alta performance, tem uma API para parceiros que permite acessar dados de recovery, strain e sono. Para academies premium e apps de coaching de alto desempenho, essa integracao e muito valorizada pelos usuarios que usam o dispositivo.
Aplicacao pratica: score de prontidao para treino
Com dados de HealthKit ou Health Connect, voce pode criar um score de prontidao diario para o usuario:
const calcularProntidao = (dadosSaude) => {
let score = 100;
// HRV: variabilidade cardiaca – indicador de recuperacao
if (dadosSaude.hrv < 30) score -= 25;
else if (dadosSaude.hrv < 50) score -= 10;
// Sono: duracao e qualidade
const horasSono = dadosSaude.sleepMinutes / 60;
if (horasSono < 6) score -= 20;
else if (horasSono dadosSaude.avgRestingHR + 10) score -= 15;
if (score >= 80) return { nivel: “ALTO”, cor: “verde”, recomendacao: “Otimo dia para treino intenso” };
if (score >= 60) return { nivel: “MODERADO”, cor: “amarelo”, recomendacao: “Treino moderado recomendado” };
return { nivel: “BAIXO”, cor: “vermelho”, recomendacao: “Priorize recuperacao hoje” };
};
Privacidade e LGPD
Dados de saude sao dados sensiveis conforme a LGPD (artigo 11). Requisitos obrigatorios: consentimento expresso e especifico do titular para cada categoria de dado de saude coletada, informacao clara sobre como os dados sao usados e com quem sao compartilhados, opcao de revogar o consentimento e excluir os dados a qualquer momento, e armazenamento seguro com criptografia. Nunca armazene dados de saude brutos sem necessidade clinica ou de uso real no app.
Tem um projeto em mente?
Somos especialistas em transformar ideias em produtos digitais. Apps, sites, automações e IA — vamos construir juntos.