es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

HealthKit devuelve datos de salud incorrectos (calorías)

Hace 6 meses hice esta pregunta en el Foro de Desarrolladores de Apple y no obtuve ninguna respuesta. Así que espero que ustedes puedan hacerlo mejor jaja

Estoy utilizando la API HealthKit de Apple en una aplicación de WatchOS para obtener métricas de energía como la Energía Activa y la Energía Basal quemada. El problema que tengo es obtener datos precisos. La aplicación Health de Apple en el iPhone muestra un valor y los datos devueltos a través de HealthKit son diferentes. A veces los datos son iguales y otras veces puede haber una diferencia de 500-600 calorías. A continuación se muestra un ejemplo de mi código que muestra cómo uso la API HealthKit para obtener los datos de energía.

Código:

NSDate* StartOfDay = [[NSCalendar currentCalendar] startOfDayForDate:[NSDate now]];
NSDateComponents* Components = [[NSDateComponents alloc] init];
Components.day = 1;
NSDate* EndOfDay = [[NSCalendar currentCalendar] dateByAddingComponents:Components toDate:StartOfDay options:NSCalendarWrapComponents];
HKSampleType* SampleType = [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierBasalEnergyBurned];
NSPredicate *Predicate = [HKQuery predicateForSamplesWithStartDate:StartOfDay endDate:EndOfDay options:HKQueryOptionNone];
NSSortDescriptor *SortDescriptor = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierStartDate ascending:YES];
HKSampleQuery* SampleQuery = [[HKSampleQuery alloc] initWithSampleType:SampleType predicate:Predicate limit:HKObjectQueryNoLimit sortDescriptors:@[SortDescriptor] resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error)
{
    if (!error && results)
    {
        int BasalCalBurned = 0;
        for (HKQuantitySample *samples in results)
        {
            BasalCalBurned += [[samples quantity] doubleValueForUnit:[HKUnit largeCalorieUnit]];
        }
    }
}

Llamar a este código en WatchOS e iOS produce los mismos problemas mencionados anteriormente.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que puede haber inconsistencias en los datos recuperados de la API HealthKit en relación a las métricas de energía, como la Energía Activa y la Energía Basal quemada. El desarrollador ha proporcionado un fragmento de código que muestra cómo se utiliza la API HealthKit para recuperar los datos, pero los valores devueltos mediante este método a veces difieren de los valores mostrados en la aplicación Health del iPhone. El desarrollador ha publicado una pregunta en el Foro de Desarrolladores de Apple hace 6 meses, pero no ha recibido ninguna respuesta. Como experto en tecnología de la información especializado en iOS, Objective-C, Apple Watch y HealthKit, es fundamental solucionar este problema para identificar posibles causas y determinar posibles soluciones.

Comments are closed.