From e3725593771f68deeaf701afef2b06aeb7c4bc47 Mon Sep 17 00:00:00 2001 From: Evgenii Evstropov Date: Fri, 18 May 2018 22:23:01 +0200 Subject: [PATCH] fix background workouts observer --- RCTAppleHealthKit/RCTAppleHealthKit+Queries.m | 27 +++++++++---------- RCTAppleHealthKit/RCTAppleHealthKit.m | 1 + 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m index 45f8720..b1d0e4a 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit+Queries.m @@ -208,23 +208,20 @@ - (void)setObserverForType:(HKSampleType *)type unit:(HKUnit *)unit { - NSLog(@"set observer"); HKObserverQuery *query = [[HKObserverQuery alloc] initWithSampleType:type predicate:nil updateHandler:^(HKObserverQuery *query, HKObserverQueryCompletionHandler completionHandler, NSError * _Nullable error){ - UIApplication *app = [UIApplication sharedApplication]; - NSLog(@"observer fired"); - [self.bridge.eventDispatcher sendAppEventWithName:@"observer" body:@""]; - completionHandler(); -// self.isSync = true; -// __block UIBackgroundTaskIdentifier backgroundTaskIdentifier = [app beginBackgroundTaskWithExpirationHandler:^{ -// -// NSLog(@"observer fired from bg"); -// [self.bridge.eventDispatcher sendAppEventWithName:@"observer" -// body:@""]; -// -// [app endBackgroundTask:backgroundTaskIdentifier]; + if (error) { + NSLog(@"*** An error occured while setting up the stepCount observer. %@ ***", error.localizedDescription); + return; + } + [self.bridge.eventDispatcher sendAppEventWithName:@"observer" body:@""]; + + // Theoretically, HealthKit expect that copletionHandler would be called at the end of query process, + // but it's unclear how to do in in event paradigm + +// dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC * 5); +// dispatch_after(delay, dispatch_get_main_queue(), ^(void){ // completionHandler(); -// self.isSync = false; -// }]; +// }); }]; [self.healthStore executeQuery:query]; diff --git a/RCTAppleHealthKit/RCTAppleHealthKit.m b/RCTAppleHealthKit/RCTAppleHealthKit.m index d26a708..41cd34e 100644 --- a/RCTAppleHealthKit/RCTAppleHealthKit.m +++ b/RCTAppleHealthKit/RCTAppleHealthKit.m @@ -22,6 +22,7 @@ #import @implementation RCTAppleHealthKit + @synthesize bridge = _bridge; RCT_EXPORT_MODULE(); -- 2.26.2