Aula 184: Integrando ao HealthKit
Nesta aula, vamos explorar como integrar o HealthKit ao seu aplicativo iOS usando Swift. O HealthKit é um poderoso framework que permite aos desenvolvedores acessar e compartilhar dados relacionados à saúde de maneira segura e consciente da privacidade.
Começando com o HealthKit
Antes de começarmos a codificar, precisamos garantir que nosso aplicativo esteja corretamente configurado para usar o HealthKit. Siga estas etapas:
-
Adicionar a capacidade do HealthKit:
- Abra seu projeto no Xcode.
- Selecione seu target e vá até a aba "Signing & Capabilities".
- Clique no botão "+" e adicione "HealthKit" da lista de capacidades.
-
Importar o HealthKit:
- Para usar as funcionalidades do HealthKit, você precisa importar o framework em seus arquivos Swift.
import HealthKit
-
Solicitar permissão para acessar os dados do HealthKit:
- Sempre peça permissão ao usuário para acessar seus dados de saúde. Você deve solicitar permissão com base no tipo de dado que você precisa (leitura, escrita).
Implementação de Exemplo do HealthKit
Vamos criar um aplicativo simples que lê os dados de contagem de passos do armazenamento do HealthKit.
Passo 1: Configurar o Armazenamento do HealthKit
Primeiro, crie uma classe para gerenciar as interações com o HealthKit.
class HealthDataManager {
let healthStore = HKHealthStore()
func authorizeHealthKit() {
let tipoContagemPassos = HKQuantityType.quantityType(forIdentifier: .stepCount)!
let tiposDeDadosParaLer: Set<HKObjectType> = [tipoContagemPassos]
healthStore.requestAuthorization(toShare: nil, read: tiposDeDadosParaLer) { (sucesso, erro) in
if sucesso {
print("A autorização do HealthKit foi bem-sucedida.")
} else {
print("A autorização do HealthKit falhou: \(String(describing: erro?.localizedDescription))")
}
}
}
}
Passo 2: Buscar Dados de Contagem de Passos
Agora que configuramos nosso armazenamento do HealthKit e solicitamos permissões, podemos escrever o código para buscar os dados de contagem de passos.
extension HealthDataManager {
func fetchStepCount(completion: @escaping (Double?, Error?) -> Void) {
guard let tipoContagemPassos = HKQuantityType.quantityType(forIdentifier: .stepCount) else {
completion(nil, NSError(domain: "HealthKit", code: 0, userInfo: [NSLocalizedDescriptionKey : "Tipo de Contagem de Passos indisponível"]))
return
}
let calendario = Calendar.current
let agora = Date()
let dataInicial = calendario.startOfDay(for: agora)
let consulta = HKSampleQuery(sampleType: tipoContagemPassos,
predicate: HKQuery.predicateForSamples(withStart: dataInicial, end: agora, options: .strictStartDate),
limit: HKObjectQueryNoLimit,
sortDescriptors: nil) { (consulta, resultados, erro) in
guard let resultados = resultados as? [HKQuantitySample], erro == nil else {
completion(nil, erro)
return
}
let totalPassos = resultados.reduce(0) { $0 + $1.quantity.doubleValue(for: HKUnit.count()) }
completion(totalPassos, nil)
}
healthStore.execute(consulta)
}
}
Passo 3: Usando o Gerenciador de Dados de Saúde
Agora, vamos ver como podemos usar nossa classe HealthDataManager
para obter os dados de contagem de passos em nosso view controller.
class ViewController: UIViewController {
let healthDataManager = HealthDataManager()
override func viewDidLoad() {
super.viewDidLoad()
healthDataManager.authorizeHealthKit()
healthDataManager.fetchStepCount { (totalPassos, erro) in
if let erro = erro {
print("Falha ao buscar os passos: \(erro.localizedDescription)")
return
}
if let totalPassos = totalPassos {
DispatchQueue.main.async {
print("Total de passos hoje: \(totalPassos)")
}
}
}
}
}
Conclusão
Nesta aula, integrou-se com sucesso o HealthKit ao nosso aplicativo iOS para ler os dados de contagem de passos do usuário. Lembre-se de sempre lidar com a privacidade do usuário com cuidado e fornecer um propósito claro para o acesso aos dados de saúde. Isso é apenas o começo do que o HealthKit pode fazer; interações mais complexas e tipos de dados estão disponíveis para uma ampla gama de informações relacionadas à saúde.
Certifique-se de testar seu aplicativo em um dispositivo real, pois o framework HealthKit não funciona no simulador. Boa codificação!