2015-08-30 2 views
3

Успех получения данных о сердечном ритме в режиме реального времени без сеанса тренировки на часах яблока os 2. Но когда экран яблочного экрана отключится, мой блок завершения больше не называется. Я хотел бы продолжать управлять этими данными в прямом эфире и звонить на телефон, когда частота сердечных сокращений слишком низкая. Возможно, я могу открыть приложение на iphone perma и, возможно, он может получить доступ к данным healthkit во время этой тренировки? Считаете ли вы, что это может сработать? или у вас есть другая идея?Доступ к данным тренировки, даже если экран экрана яблока выключен

С уважением

+0

Не могли бы вы сообщить нам, как вы получили данные о частоте сердечных сокращений в живых без тренировки? Вы размещали свой код в расширительном щитке или контроллере просмотра? Заранее спасибо. –

+0

Я объясняю все в своем ответе чуть ниже;). Это приложение iphone (контроллеры просмотра), я делаю HKAnchoredObjectQuery. Я создаю nstimer для вызова моего запроса каждые 5 секунд. Существует ошибка с iOS 9, когда приложение iphone для здоровья открыто, запрос не позволяет вам получать последние данные о частоте сердечных сокращений. Перед тем, как запросить эти данные в своем приложении, нужно убить родное приложение для здоровья. –

+0

Большое спасибо за ваш ответ. Можно ли получить частоту сердечных сокращений с помощью HKWorkOutSession? Какой из них лучше всего получать частоту сердечных сокращений, HKAnchoredObjectQuery или HKWorkOutSession? –

ответ

3

Эй я нашел решение:

я держать iPhone приложение на переднем плане с:

[UIApplication sharedApplication].idleTimerDisabled = YES 

И с тем же запросом, чем яблоко часы (HKAnchoredObjectQuery) я могу получить доступ к последним данным набора здоровья. Я также получить реальные данные сердечного ритма, даже когда мое яблоко часы выключиться (с тренировки сессии)

  • мой запрос

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

+0

Отличная работа !!! 1+ –

+1

Как часто вы получаете обратные вызовы на стороне iOS? Потому что для меня это примерно каждые 30 минут или около того ... (со всеми образцами, которые произошли с этим временем). Есть ли что-то, что я могу потерять? – Georg

+0

@ Арсень вы можете прочитать частоту сердечных сокращений в реальном времени с помощью этого подхода? – Licx

0

дизайн, watchOS 2 приложения не могут работать, пока экран часов выключен. Вы не можете изменить это поведение.

+0

Хорошо, вот что я подумал. Как вы думаете, я могу открыть приложение iphone и получить доступ к данным медицинского набора из моего iphone (во время тренировки)? –

+0

Телефон пользователя, вероятно, будет заблокирован во время тренировки, а данные HealthKit недоступны, если устройство заблокировано. Также обратите внимание, что данные HealthKit с часов периодически синхронизируются с телефоном, поэтому в реальном времени они недоступны. – Allan

+0

Да, но с открытием приложения iphone и HKAnchoredObjectQuery мне удастся получить данные о частоте сердечных сокращений в реальном времени на моем iphone (даже если приложение Apple Watch выключено). У меня была проблема синхронизации, но когда я вызываю [self.hkStore startQuery: heartRateQuery]; он отлично работает, я не знаю, почему, но, похоже, заставляет импортировать данные ... Подробнее в моем ответе;) –

Смежные вопросы