Frequência cardíaca com o Healthkit da Apple

Atualmente, estou usando o Healthkit em um aplicativo e não tenho problemas em obter informações para a maioria dos tipos, mas estou tendo problemas com a frequência cardíaca. Sempre que tento ler uma amostra, obtenho "0" como resultado. Eu tenho um Apple Watch e minha frequência cardíaca é inserida no aplicativo Apple Health e pode visualizá-lo visualmente, por isso não é um problema de hardware. Eu só preciso exibi-lo, não há necessidade de escrever os dados de volta. Ele pede minha permissão na primeira execução para permitir o acesso à freqüência cardíaca, portanto não deve haver nenhum problema com esse código, mas eu o publicarei de qualquer maneira.

A maioria dos exemplos que posso encontrar com a detecção da frequência cardíaca está no Swift, do qual prefiro ficar longe, ou desatualiza os métodos bluetooth / camera.

Aqui está o que estou usando, que é principalmente copiado e colado do código que recupera etapas, curta distância etc. em outras partes do meu código ... então provavelmente tenho algo nesse bloco que não é compatível com os dados de freqüência cardíaca tipo, mas não consigo encontrá-lo. No momento, parece que ele estará recebendo a frequência cardíaca média do dia, e não a amostra mais recente, o que é bom por enquanto, desde que eu possa ver ALGUNS tipos de dados sendo alimentados no aplicativo. Não consegui encontrar uma maneira de pesquisar a amostra mais recente da freqüência cardíaca, o que me leva a acreditar que estou usando o método errado completamente, mas não consigo encontrar outras informações ou amostras que funcionem. Eu tentei cerca de 8 projetos / códigos de amostra on-line diferentes, nenhum dos quais consegui produzir nada além de "0" como resultado (portanto, não há links para o código de exemplo ... Já tentei todos os que já estão disponíveis ... google, github, etc, etc, então todos os links provavelmente receberão uma resposta "Eu já testei esse mesmo erro", lol). Aqui está o que estou usando agora:

O bloco que tenho 99,9% de certeza está me dando os 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 as permissões:

- (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
                                       }

                                   }];}

E acima do meu (void) queryHealthDataHeart, tenho as referências apropriadas, como visto aqui:

#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

questionAnswers(2)

yourAnswerToTheQuestion