代码之家  ›  专栏  ›  技术社区  ›  Oakleaf

Titanium HealthKit模块-无法创建统计数据查询,并按源进行累积和分离

  •  0
  • Oakleaf  · 技术社区  · 9 年前

    我正在尝试创建一个Ti.Healthkit。StatisticsCollection,在这里我可以获取每天分组的步骤数。问题是,我还需要所有来源,因此我可以过滤(“手动”)通过Apple Health(手动)和其他来源添加的所有步骤,而不是设备和Apple watch。

    所以我已经设置了统计查询,一切看起来都很好。我可以为每个日期获取所有来源。但是,问题是,不管怎样,我都无法获得每个来源所采取的步骤数。

        var query = HealthKit.createStatisticsCollectionQuery(
        {
            type        : HealthKit.OBJECT_TYPE_STEP_COUNT,
            filter      : HealthKit.createFilterForSamples(
            {
                startDate   : date_from,
                endDate     : date_to
            }),
            options     : HealthKit.STATISTICS_OPTION_CUMULATIVE_SUM | HealthKit.STATISTICS_OPTION_SEPARATE_BY_SOURCE,
            anchorDate  : anchorDate,
            interval    : 3600*24, // 24 hours
            onInitialResults    : function(e) 
            {
                if (e.errorCode !== undefined) 
                {
                    //Utils.showError(e);
                } 
                else 
                {
                    for(var i in e.statisticsCollection.statistics)
                    {
                        var statistics = e.statisticsCollection.statistics[i];
                        console.log(statistics.sources[0]);
                        var quantity = statistics.getSumQuantityForSource(statistics.sources[0]);
    
    
                        var stepCount = quantity.valueForUnit(HealthKit.createUnit('count'));
    
                        console.log(statistics.sources);
                        //console.log(statistics.startDate);
                        console.log(stepCount);
    
                        for(var k in statistics.sources)
                        {
                            var _source = statistics.sources[k];
    
    
                            var quantity = statistics.getSumQuantity(_source);
    
                            console.log(_source);
                            console.log(quantity);
    

    我试着遵循苹果的文档和Ti.HealthKit的文档,据我所知,我现在已经尝试了一切。我还尝试在迭代所有源代码时获取步骤,以将其放入统计方法中;

    源的总数量(_source)

    但它只返回“null”。

    我可以得到一天的步骤数,但它包含所有源步骤。。

    有人有什么建议吗?我觉得我已经尽了一切可能。

    1 回复  |  直到 9 年前
        1
  •  1
  •   Oakleaf    9 年前

    好吧,在这篇文章发表后,我花了5个小时10分钟研究这个问题,我发现自己做错了什么。我应该检查“数量”是否为空(var quantity=statistics.getSumQuantity(_source);)然后继续下一次迭代,因为在结果数组中,我用步骤。。