Access workout data even when apple watch screen turn off

这一生的挚爱 提交于 2020-01-20 02:53:05

问题


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


回答1:


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];




回答2:


By design, watchOS 2 apps are not allowed to run while the watch screen is off. You cannot change this behavior.



来源:https://stackoverflow.com/questions/32300247/access-workout-data-even-when-apple-watch-screen-turn-off

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!