El controlador de actualización HKAnchoredQuery no funciona correctamente

Escribí un código para obtener valores de frecuencia cardíaca del kit de salud. El código funciona bien, pero cuando los nuevos valores del corazón se actualizan en el kit de salud. Tengo que ir a la pantalla principal y luego realizar múltiples tareas en mi aplicación para obtener los resultados actualizados. Mi objetivo es obtener el resultado actualizado en mi aplicación sin volver a abrirla o realizar múltiples tareas, ayúdenme ya que soy nuevo en el desarrollo de iOS. Mi código:-

  -(void)get_heartRates
{

//code to get the updated heart beats

HKSampleType *sampleType =
[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];

HKObserverQuery *query =
[[HKObserverQuery alloc]
 initWithSampleType:sampleType
 predicate:nil
 updateHandler:^(HKObserverQuery *query,
                 HKObserverQueryCompletionHandler completionHandler,
                 NSError *error) {

     if (error) {


         NSLog(@"error occured while setting observer. %@ ",
               error.localizedDescription);
         abort();
     }

     // Take whatever steps are necessary to update your app's data and UI
     // This may involve executing other queries


     [self executeAnchoredQuery];

     // If you have subscribed for background updates you must call the completion handler here.
     // completionHandler();

 }];

[self.healthStore executeQuery:query];
 }

-(void)executeAnchoredQuery
{

NSDate *startDate1 = [NSDate distantPast];
NSPredicate *Predicate = [HKQuery     predicateForSamplesWithStartDate:startDate1 endDate:[NSDate date] options:HKQueryOptionStrictEndDate];
HKSampleType *object = [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];

sum_Of_HeartRates=0.0;

HKAnchoredObjectQuery  *heartQuery = [[HKAnchoredObjectQuery alloc] initWithType:object predicate:Predicate anchor:self.lastAnchor limit:0 resultsHandler:^(HKAnchoredObjectQuery *query, NSArray<HKSample *> *sampleObjects, NSArray<HKDeletedObject *> *deletedObjects, HKQueryAnchor *newAnchor, NSError *error) {

    NSLog(@"Sample counts:%ld",sampleObjects.count);
    for(int i=0;i<(int)sampleObjects.count;i++)
    {

        HKQuantitySample *sample = (HKQuantitySample *)[sampleObjects objectAtIndex:i];
        HKQuantity *quantity = sample.quantity;
        double bpm_Values= [quantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]];
        sum_Of_HeartRates=sum_Of_HeartRates+bpm_Values;

    }
    avg_heartBeats=sum_Of_HeartRates/(int)sampleObjects.count;
}];

[heartQuery setUpdateHandler:^(HKAnchoredObjectQuery *query, NSArray<HKSample *> *SampleArray, NSArray<HKDeletedObject *> *deletedObjects, HKQueryAnchor *Anchor, NSError *error) {

    HKQuantitySample *sample = (HKQuantitySample *)[SampleArray objectAtIndex:0];
    HKQuantity *quantity = sample.quantity;
    new_Updated_Data =[quantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]];
    NSLog(@"new quantity:%f",new_Updated_Data);
}];

[self.healthStore executeQuery:heartQuery];
NSLog(@"updated data %f",new_Updated_Data);


NSLog(@"%f", avg_heartBeats);

 }

Respuestas a la pregunta(1)

Su respuesta a la pregunta