Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I success to get heart rate data in live without workout session on apple watch os 2. But when apple watch screen turn off, my completion block is not anymore called. I would like to continue to manage these data in live and to make my phone ring when heart rate is too low. Maybe i can let the app on the iphone perma open and maybe it can access to the healthkit data during this workout ? Do you think this can work ? or do you have another idea ?

Regards

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
659 views
Welcome To Ask or Share your Answers For Others

1 Answer

Hey i found a solution :

i keep iphone app in foreground with :

[UIApplication sharedApplication].idleTimerDisabled = YES

And with the same query than apple watch (HKAnchoredObjectQuery) i can access the latest health kit data. I well get live heart rate data even when my apple watch is turn off (with a workout session)

  • my query

HKQuantityType *type = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate];

HKAnchoredObjectQuery *heartRateQuery = [[HKAnchoredObjectQuery alloc]
                                     initWithType:type
                                     predicate:nil
                                     anchor:self.anchor
                                     limit:HKObjectQueryNoLimit
                                     resultsHandler:^(HKAnchoredObjectQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable sampleObjects, NSArray<HKDeletedObject *> * _Nullable deletedObjects, HKQueryAnchor * _Nullable newAnchor, NSError * _Nullable error) {
                                         if (error) {

                                             // Perform proper error handling here...
                                             NSLog(@"*** An error occured while performing the anchored object query. %@ ***",
                                                   error.localizedDescription);

                                         }

                                         self.anchor = newAnchor;

                                         HKQuantitySample *sample = (HKQuantitySample *)[sampleObjects firstObject];
                                         if (sample) {
                                             double value = [sample.quantity doubleValueForUnit:[HKUnit unitFromString:@"count/min"]];

                                             dispatch_async(dispatch_get_main_queue(), ^(void){
                                                 self.heartrateLabel.text = [NSString stringWithFormat:@"%0.0f",value];
                                             });
                                             NSLog([NSString stringWithFormat:@"%0.0f",value]);
                                             [self.hkStore stopQuery:heartRateQuery];


                                         }
                                     }];

[self.hkStore executeQuery:heartRateQuery];


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...