HKSampleQuery 未检索到最新步骤

Posted

技术标签:

【中文标题】HKSampleQuery 未检索到最新步骤【英文标题】:HKSampleQuery is not retrieving the latest steps 【发布时间】:2017-07-24 19:56:31 【问题描述】:

我正在使用以下查询来使用 healthkit 检索特定日期的步骤

//Predicate
NSDate *startDate = [[NSCalendar currentCalendar] startOfDayForDate:[NSDate date]];
NSDateComponents *comp = [NSDateComponents new];
comp.day = 1;
comp.second = -1;
NSDate *endDate = [[NSCalendar currentCalendar] dateByAddingComponents:comp toDate:startDate options: 0];
NSPredicate *predicate = [HKQuery predicateForSamplesWithStartDate:startDate endDate:[[NSDate date] dateByAddingDays:endDate] options: HKQueryOptionStrictEndDate];


NSSortDescriptor *timeSortDescriptor = [[NSSortDescriptor alloc] initWithKey:HKSampleSortIdentifierStartDate ascending:YES];

HKQuantityType *type = [HKObjectType quantityTypeForIdentifier:HKQuantityTypeIdentifierStepCount];


HKSampleQuery *stepsQuery = [[HKSampleQuery alloc] initWithSampleType: type
                                                                predicate: predicate limit:HKObjectQueryNoLimit
                                                          sortDescriptors:@[timeSortDescriptor]
                                                           resultsHandler: ^(HKSampleQuery *query, NSArray *resultsSteps, NSError *error) 
    ....

问题:查询未返回最新步骤。有两种方法可以获得最新的步骤

    在打开我的应用之前先打开健康应用 - 这将更新健康应用中的最新步骤,并且上述查询会返回最新步骤 20-30 分钟后打开应用,显示最新步骤

我错过了什么吗?

P.S 这是一个遗留代码库,所以没有 Swift :)

【问题讨论】:

How to force a HKQuery to load the most recent steps counts?的可能重复 【参考方案1】:

在示例查询下方添加观察者查询可以解决问题,但我仍然找不到此问题的根本原因

 HKObserverQuery *ibsQuery  = [[HKObserverQuery alloc] initWithSampleType:steps predicate:pred updateHandler:^(HKObserverQuery * _Nonnull query, HKObserverQueryCompletionHandler  _Nonnull completionHandler, NSError * _Nullable error) 
        //Required completion block
    ];
 [healthStore executeQuery:ibsQuery];

【讨论】:

以上是关于HKSampleQuery 未检索到最新步骤的主要内容,如果未能解决你的问题,请参考以下文章

从 HKSampleQuery 获取最新数据点

从 HKSampleQuery 获取最新数据点

EI检索投稿基本步骤

从 HKObserverQuery 获取结果

iOS APP打包上传到APPstore的最新步骤

iOS APP打包上传到APPstore的最新步骤