美文网首页
iOS获取步数

iOS获取步数

作者: liufengting | 来源:发表于2018-08-06 11:11 被阅读448次

1. 请求权限

- (void)requestHealthKitPermissionWithCompletion:(void (^)(BOOL success, NSError *error))completion {
    if ([[[UIDevice currentDevice] systemVersion] doubleValue] >= 8.0) {
        if (![HKHealthStore isHealthDataAvailable]) {
            completion(NO, [NSError new]);
        } else {
            [self.healthStore requestAuthorizationToShareTypes:nil
                                                     readTypes:[NSSet setWithArray:@[[HKSampleType categoryTypeForIdentifier:HKCategoryTypeIdentifierSleepAnalysis],
                                                                                     [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierBodyMass],
                                                                                     [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount],
                                                                                     [HKSampleType workoutType],
                                                                                     [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierHeartRate],
                                                                                     [HKSampleType quantityTypeForIdentifier:HKQuantityTypeIdentifierDietaryEnergyConsumed]]]
                                                    completion:^(BOOL success, NSError * _Nullable error) {
                                                        dispatch_async(dispatch_get_main_queue(), ^{
                                                            completion(success, error);
                                                        });
                                                    }];
        }
    } else {
        completion(NO, [NSError new]);
    }
}

2. 请求步数

- (void)requestStepCountWithStartTime:(NSDate *)startTime endTime:(NSDate *)endTime completion:(void(^)(double stepCount, NSError *error))completion {
    
    [self requestHealthKitPermissionWithCompletion:^(BOOL success, NSError *error) {
        if (success) {
            HKQuantityType *type = [HKQuantityType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];
            NSSortDescriptor *start = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierStartDate ascending:NO];
            NSSortDescriptor *end = [NSSortDescriptor sortDescriptorWithKey:HKSampleSortIdentifierEndDate ascending:NO];
            NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startTime endDate:endTime options:HKQueryOptionNone];
            HKSampleQuery *sampleQuery = [[HKSampleQuery alloc]initWithSampleType:type
                                                                        predicate:predicate
                                                                            limit:0
                                                                  sortDescriptors:@[start,end]
                                                                   resultsHandler:^(HKSampleQuery * _Nonnull query, NSArray<__kindof HKSample *> * _Nullable results, NSError * _Nullable error) {
                                                                       if (error && completion) {
                                                                           completion(0, error);
                                                                           return;
                                                                       }
                                                                       double allStepCount = 0;
                                                                       for (HKQuantitySample *result in results) {
                                                                           double step = [result.quantity doubleValueForUnit:[HKUnit countUnit]];
                                                                           allStepCount += step;
                                                                       }
                                                                       if (completion) {
                                                                           completion(allStepCount, nil);
                                                                       }
                                                                   }];
            [self.healthStore executeQuery:sampleQuery];
        }
    }];
}

相关文章

  • iOS获取步数

    1. 请求权限 2. 请求步数

  • iOS 步数获取

    CMPedometer获取步数,获取的步数用户不能进行修改 第一步:配置info.plist里边的获取运动权限 <...

  • 初探HealthKit 获取步数

    [iOS] HealthKit 获取步数 前言 HealthKit 是苹果在 iOS 8.0 之后推出的健康框架,...

  • iOS 8 获取步数

    前言 上回说要给大家的陀螺仪的现在来了 这是运动项目里的一个步数获取的实现,在此之前不是是通过手机健康App的获取...

  • iOS开发——步数获取

    最近半个月的开发工作,重点一直是类似于悦跑圈、咕咚这样的运动产品的功能,所以在处理iOS设备在运动中的表现也是积累...

  • iOS 获取实时步数

    以下是个人理解,如有不对,轻喷: 网上给的大部分方法是调取系统的"健康"APP(HealthKit 库)的数据,但...

  • iOS HealthKit获取步数

    作为一个天天喊着减肥的资深女程序媛儿胖纸,对于减肥的APP还是十分关注的,尤其是运动步数排行榜,其实也只是看到步数...

  • iOS HealthKit 获取健康步数

    引入HealthKit库 创建 HKHealthStore

  • iOS 获取健康数据 步数

    最近的项目内容是给用户的健康数据做一个可视化的表格,现在把步数相关的统计查询之类的都已经完成了。其中遇到不少问题,...

  • iOS CMPedometer获取运动步数

    CMPedometer是iOS 8.0推出的,用来统计用户的的运动数据(步数、楼层、公里数等)。最近项目需...

网友评论

      本文标题:iOS获取步数

      本文链接:https://www.haomeiwen.com/subject/vchmkttx.html