Запазване на тренировки в HealthKit

Опитвам се да запазя тренировка в HealthKit. Ето моят код:

__weak typeof(self) weakSelf = self;

self.healthStore = [[HKHealthStore alloc] init];
[self.healthStore requestAuthorizationToShareTypes:[NSSet setWithObject:[HKWorkoutType workoutType]] readTypes:nil completion:^(BOOL success, NSError *error) {

    if (success){

        HKWorkout *workout = [HKWorkout workoutWithActivityType:HKWorkoutActivityTypeRunning startDate:[NSDate dateWithTimeIntervalSinceNow:-3600] endDate:[NSDate date] duration:3600 totalEnergyBurned:[HKQuantity quantityWithUnit:[HKUnit calorieUnit] doubleValue:100.0] totalDistance:[HKQuantity quantityWithUnit:[HKUnit meterUnit] doubleValue:5000.0] metadata:nil];

        __strong typeof(weakSelf) strongSelf = weakSelf;
        [strongSelf.healthStore saveObject:workout withCompletion:^(BOOL success, NSError *error) {
            NSLog(@"Success? %d", success);
            if (error){
                NSLog(@"Error: %@", error);
            }
        }];
    }

}];

След подкана към потребителя за разрешение (и приемане), този код създава активност за бягане, която продължава 1 час, изгаря 100 калории и има разстояние от 5000 метра.

Запазването на тренировката в HKHealthStore дава стойност за успех ДА и нулева грешка - така че на този етап очаквам да е там.

При отваряне на приложението Health обаче не мога да намеря тренировката, разстоянието или изгорените калории. Какво ми липсва?


person simonmaddox    schedule 18.09.2014    source източник


Отговори (2)


Това е очаквано поведение в iOS 8. Тренировките не се показват в приложението Health, но все пак трябва да можете да правите заявки за тях. Калориите и разстоянието от тренировка ще се покажат в Health само ако запазите проби за калории/разстояние, свързани с тази тренировка, като използвате -[HKHealthStore addSamples:toWorkout:completion].

person Allan    schedule 18.09.2014
comment
Благодаря! Също така подадох това като радар за заявка за функция - rdar://18391800 - person simonmaddox; 19.09.2014
comment
Бърз въпрос... след като addSamples:toWorkout... как можете да ги получите отново? - person Georg; 05.04.2017

Използвайте [HKHealthStore addSamples:toWorkout:completion]. за повече информация http://eriphonedeveloper.wordpress.com/2014/09/30/a-soft-touch-of-apple-healthkit-healthkit-tutorial/

person Mahendra Y    schedule 28.10.2014