2015-09-28 3 views
4

Я создаю небольшое тестовое приложение с HealthKit, пытаясь включить ручные тренировки в Activity Circles.WatchOS2 Health Kit - Добавление в действие Перемещение кольца

Мой код находится ниже скриншота.

Из изображения ниже 178 Cal Other Workout и 83 Cal Rower были созданы из приложения Watch Workout, которые показывают зеленый круг рядом с ними (чтобы указать, что они включены в круг).

3-я тренировка «188 Cal Outdoor Run» была создана из моего тестового приложения, но показывает значок приложения и нет зеленого кольца и не входит в круги?

Примечание: до обновления до iOS 9.0.1 не было ничего, где теперь отображается значок приложения.

Код:

HKQuantity *kCal = [HKQuantity quantityWithUnit:[HKUnit kilocalorieUnit] doubleValue:188]; 
HKQuantity *disance = [HKQuantity quantityWithUnit:[HKUnit meterUnit] doubleValue:2000]; 

NSDate *startDate = [NSDate dateWithTimeIntervalSinceNow:-3600]; 
NSDate *endDate = [NSDate dateWithTimeIntervalSinceNow:-60]; 

HKWorkout *workout = [HKWorkout workoutWithActivityType:HKWorkoutActivityTypeRunning startDate:startDate endDate:endDate duration:3540 totalEnergyBurned:kCal totalDistance:disance metadata:nil]; 

[self.healthStore saveObject:workout withCompletion:^(BOOL success, NSError * _Nullable error) { 

    HKQuantity *heartRateForInterval = [HKQuantity quantityWithUnit:[HKUnit unitFromString:@"count/min"] doubleValue:95.0]; 

    HKQuantitySample *heartRateForIntervalSample = [HKQuantitySample quantitySampleWithType:[HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate] 
            quantity:heartRateForInterval 
            startDate:startDate 
            endDate:[NSDate dateWithTimeInterval:60 sinceDate:startDate]]; 

    __weak typeof(self) weakSelf = self; 

    if(!success) 
    { 
     [self.statusLabel setText:[NSString stringWithFormat:@"saveObject: %@", error.localizedDescription]]; 
    } 
    else 
    { 
     [self.statusLabel setText:[NSString stringWithFormat:@"Success"]]; 

     [self.healthStore addSamples:@[heartRateForIntervalSample] toWorkout:workout completion:^(BOOL success, NSError * _Nullable error) { 

      if(success) { 
       [weakSelf.statusLabel setText:@"Saved - Added Sample"]; 
      } else { 
       [weakSelf.statusLabel setText:[NSString stringWithFormat:@"addSamples: %@", error.localizedDescription]]; 
      } 

     }]; 
    } 

}]; 
+0

Поддерживает ли ваше приложение тренировку на часах или на компаньоне? – Allan

+0

@Allan: Я сохраняю тренировку на Watch. – jodm

+0

Прошлой ночью я добавил реальные образцы сердечного ритма из HKWorkoutSession и до сих пор не добавил к Move Ring. Я думал, что попробую это сделать, так как мои данные о частоте сердечных сокращений недостаточно точны. – jodm

ответ

0

Это не достаточно, чтобы сохранить тренировки с ненулевым HKQuantity для свойства totalEnergyBurned. Ваше приложение также должно добавить связанные с активной энергией образцы ожогов для тренировки, чтобы их подсчитывали в направлении кольца Move. См. Документацию HKHealthStore для метода addSamples:toWorkout:completion:. В идеальном случае образцы активной энергии должны быть мелкозернистыми, чтобы пользователь мог видеть изменения интенсивности в ходе их тренировки.

+0

Добавляет ли это кольцо перемещения (розовое) или кольцо упражнений (зеленое)? OP упоминает кольцо движения в своем названии, но на их снимке экрана показано кольцо упражнений. Я работаю над добавлением тренировок вручную, чтобы увеличить упражнение (зеленое) кольцо без везения - это работает для розового, зеленого или обоих? –

+0

Просто попробовал и может подтвердить, что вы можете добавить в движение (розовое) кольцо, добавив образцы 'HKQuantityTypeIdentifierActiveEnergyBurned' в' HKWorkout' - похоже, не найти способ расширить упражнение (зелёное) кольцо, хотя ... –

+1

Невозможно, чтобы ваши тренировки вашего приложения вносили непосредственный вклад в кольцо упражнений. – Allan