Frecuencia cardíaca con el kit de salud de Apple

Actualmente estoy usando Healthkit en una aplicación y no tengo problemas para obtener información para la mayoría de los tipos, pero tengo problemas con la frecuencia cardíaca. Cada vez que intento leer una muestra, obtengo "0" como resultado. Tengo un Apple Watch, y mi ritmo cardíaco se alimenta en la aplicación Apple Health, y puedo verlo visualmente allí, por lo que no es un problema de hardware. Solo necesito mostrarlo, no es necesario volver a escribir los datos. Pide mi permiso en la primera ejecución para permitir el acceso a la frecuencia cardíaca, por lo que no debería haber ningún problema con ese código, pero lo publicaré de todos modos.

La mayoría de los ejemplos que puedo encontrar con la detección de frecuencia cardíaca se encuentran en Swift, de la que prefiero alejarme, o en los métodos anticuados de Bluetooth / cámara.

Esto es lo que estoy usando, que en su mayoría es copiado y pegado del código que recupera pasos, distancia a pie, etc. en otra parte de mi código ... así que probablemente tengo algo en este bloque que no es compatible con los datos de frecuencia cardíaca tipo, pero no puedo encontrarlo. En este momento, parece que obtendrá la frecuencia cardíaca promedio del día, y no la última muestra, lo cual está bien por ahora, siempre que pueda ver ALGUNOS tipos de datos que se envían a la aplicación. No pude encontrar una manera de sondear la última muestra de la frecuencia cardíaca, lo que me lleva a creer que estoy usando el método incorrecto por completo, pero no puedo encontrar ninguna otra información o muestra que funcione. He probado unos 8 códigos / proyectos de muestra en línea diferentes, ninguno de los cuales puedo obtener para producir otra cosa que no sea "0" como resultado (así que por favor no hay enlaces al código de ejemplo ... Ya he probado todos los disponibles ... google, github, etc., etc., por lo que cualquier enlace probablemente obtendrá una respuesta "Ya he probado ese mismo error", jajaja). Esto es lo que estoy usando ahora:

El bloqueo que estoy 99.9% seguro me está dando los problemas:

    - (void)queryHealthDataHeart{
    HKQuantityType *typeHeart =[HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];
    NSDate *now = [NSDate date];
    NSCalendar *calendar = [NSCalendar autoupdatingCurrentCalendar];
    NSDateComponents *components = [calendar components:NSCalendarUnitYear| NSCalendarUnitMonth | NSCalendarUnitDay
                                               fromDate:now];
    NSDate *beginOfDay = [calendar dateFromComponents:components];
    NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:beginOfDay endDate:now options:HKQueryOptionStrictStartDate];

    HKStatisticsQuery *squery = [[HKStatisticsQuery alloc] initWithQuantityType:typeHeart quantitySamplePredicate:predicate options:HKStatisticsOptionNone completionHandler:^(HKStatisticsQuery *query, HKStatistics *result, NSError *error) {
        dispatch_async(dispatch_get_main_queue(), ^{
            HKQuantity *quantity = result.averageQuantity;
            double beats = [quantity doubleValueForUnit:[HKUnit heartBeatsPerMinuteUnit]];
            _lblHeart.text = [NSString stringWithFormat:@"%.f",beats];
        }
        );
    }];
    [self.healthStore executeQuery:squery];
}

Código para verificar permisos:

- (void)readHealthKitData{
HKHealthStore *healthStore = [[HKHealthStore alloc] init];
NSSet *shareObjectTypes = [NSSet setWithObjects:
                           nil];
NSSet *readObjectTypes  = [NSSet setWithObjects:
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning],
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate],
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierFlightsClimbed],
                           [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount],
                           nil];
// Request access
[healthStore requestAuthorizationToShareTypes:shareObjectTypes
                                    readTypes:readObjectTypes
                                   completion:^(BOOL success, NSError *error) {
                                       if(success == YES)
                                       {
                                           [self queryHealthData];
                                           [self queryHealthDataDistance];
                                           [self queryHealthDataFlights];
                                           [self queryHealthDataHeart];
                                       }
                                       else
                                       {
                                           // Determine if it was an error or if the
                                           // user just canceld the authorization request
                                       }

                                   }];}

Y encima de mi - (vacío) queryHealthDataHeart, tengo las referencias adecuadas, como se ve aquí:

#import "AN_Pedometer.h"
#import <HealthKit/HealthKit.h>

@interface AN_Pedometer (){
UILabel *lbCMData;
NSDateFormatter *formatter;}
@property (nonatomic, strong) CMPedometer *pedometer;
@property (nonatomic, strong) HKHealthStore *healthStore;
@end
@interface HKUnit (HKManager)
+ (HKUnit *)heartBeatsPerMinuteUnit;
@end

@implementation HKUnit (HKManager)

+ (HKUnit *)heartBeatsPerMinuteUnit {
return [[HKUnit countUnit] unitDividedByUnit:[HKUnit minuteUnit]];
}

@end

Respuestas a la pregunta(2)

Su respuesta a la pregunta