Доступ к данным Health Kit в Apple Watch OS 2, за исключением данных о тренировках

Я могу получить доступ к данным о тренировке с помощью сеанса тренировки, но не могу сделать то же самое с другими данными, такими как доступ к данным о росте, весе, диетической воде, температуре тела, кровяному давлению и т. д.

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

Часы могут получить доступ только к данным о тренировках, как упоминалось в видео WWDC 2015?

введите здесь описание изображения

Пример кода:

-(void)bodyTempForLabel :(WKInterfaceLabel *)bodyTempLabel {

    HKSampleType *bodyTemp = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyTemperature];

    [self readMostRecentSampleType:bodyTemp withCompletion:^(HKQuantitySample *quantitySample, NSError *error) {

        if(error) {

            NSLog(@"Error Reading Weight From health Kit");
        }

        self.bodyTemp = quantitySample;

        double bodyTempinDegree = [[self.bodyTemp quantity] doubleValueForUnit:[HKUnit unitFromString:[NSString stringWithFormat:@"%@C", @"\u00B0"]]];

        dispatch_async(dispatch_get_main_queue(), ^{

            [bodyTempLabel setText:[NSString stringWithFormat:@"%f",bodyTempinDegree]];
        });

    }];
}

-(void)readMostRecentSampleType : (HKSampleType *)sampleType withCompletion:(void(^)(HKQuantitySample *quantitySample,NSError *error))recentSample {

    NSSortDescriptor *sortDescriptor = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierEndDate ascending:NO];

    HKQuery *sampleQuery = [[HKSampleQuery alloc] initWithSampleType:sampleType predicate:nil limit:HKObjectQueryNoLimit sortDescriptors:@[sortDescriptor] resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error) {

        if(!error) {
            // No results retuned array empty
           HKQuantitySample *mostRecentSample = results.firstObject;

            recentSample(mostRecentSample,error);
        }

    }];

    [_healthStore executeQuery:sampleQuery];

}

Любая помощь будет оценена по достоинству. Спасибо!!!


person Dheeraj Singh    schedule 13.08.2015    source источник


Ответы (2)


Кажется, вам нужно использовать реальное устройство для отладки. Я не могу получить какую-либо ценность от HK при запуске симулятора, но он отлично работает в Apple Watch. (Используя XCode 7 бета 5).

person rmvz3    schedule 22.08.2015
comment
но у вас есть доступ к данным о росте и весе из Apple Watch? - person Dheeraj Singh; 24.08.2015
comment
Да. Я читаю (и записываю) все данные о здоровье с устройства, но не с симулятора. - person rmvz3; 25.08.2015

Apple Watch имеют доступ ко всем типам аптечек (но только к подмножеству данных). Запрашивало ли ваше приложение разрешение для всех этих типов? Каждый тип, который вы хотите читать или записывать, должен быть явно запрошен при настройке хранилища здоровья. Например, чтобы считать сожженную энергию, расстояние и частоту сердечных сокращений, вам необходимо включить:

let typesToRead = Set([
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierActiveEnergyBurned)!,
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierDistanceWalkingRunning)!,
    HKObjectType.quantityTypeForIdentifier(HKQuantityTypeIdentifierHeartRate)!
])

self.healthStore.requestAuthorizationToShareTypes(typesToShare, readTypes: typesToRead) { success, error in
    // ...
}
person lehn0058    schedule 13.08.2015
comment
Да, я запросил разрешение на чтение для всех этих типов, и мне также было предложено окно разрешения комплекта здоровья. - person Dheeraj Singh; 14.08.2015