4、调用- (void)startPedometerUpdatesFromDate:(NSDate *)start withHandler:(CMPedometerHandler)handler方法获取从某个时间点到现在的步数,距离,楼层等信息。此方法会实时更新数据。
[self.pedometer startPedometerUpdatesFromDate:fromDate withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
// 如果没有错误,具体信息从pedometerData参数中获取
}];
5、不需要使用的时候,调用stopPedometerUpdates方法停止更新
[self.pedometer stopPedometerUpdates];
6、如果不需要实时更新数据,可直接调用- (void)queryPedometerDataFromDate:(NSDate *)start toDate:(NSDate *)end withHandler:(CMPedometerHandler)handler;查询某个时间段内的数据,不过只能查询七天内的数据。
[self.pedometer queryPedometerDataFromDate:start toDate:end withHandler:^(CMPedometerData * _Nullable pedometerData, NSError * _Nullable error) {
// 如果没有错误,具体信息从pedometerData参数中获取
}];
使用HealthKit框架获取苹果健康数据
在HealthKit中,使用HKHealthStore类来访问健康数据,健康数据的类型有很多类,苹果健康app中的健身记录、营养摄入、睡眠状况等等都可以进行数据读取和共享(即第三方app写入数据到苹果健康app)。
大概步骤:
1、在Xcode中, 打开HealthKit 功能

开启HealthKit功能
1、调用isHealthDataAvailable方法检查设备HealthKit是否可用。
if ([HKHealthStore isHealthDataAvailable]) {
// add code to use HealthKit here...
}
2、如果可用,创建HKHealthStore对象
self.healthStore = [[HKHealthStore alloc] init];
3、向用户请求授权共享或读取健康数据, 调用- (void)requestAuthorizationToShareTypes:(nullable NSSet<HKSampleType *> *)typesToShare readTypes:(nullable NSSet<HKObjectType *> *)typesToRead completion:(void (^)(BOOL success, NSError * _Nullable error))completion;方法,例如下面请求读取步数和距离数据
NSSet<HKSampleType *> *shareTypes = nil;
HKQuantityType *stepType = [HKQuantityType quantityTypeForIdentifier:(HKQuantityTypeIdentifierStepCount)];
HKQuantityType *distanceType = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierDistanceWalkingRunning];
NSSet<HKObjectType *> *readTypes = [NSSet setWithObjects:stepType, distanceType, nil];
[self.healthStore requestAuthorizationToShareTypes:shareTypes readTypes:readTypes completion:^(BOOL success, NSError * _Nullable error) {
}];










