React Native HealthKit getDailyStepCountSamples 返回未定义或空数组

React Native HealthKit getDailyStepCountSamples returning undefined or empty array

我正在使用 react-native-health 创建一个应用程序来读取每日步数。我在模拟器 Health 应用程序上手动添加了步骤,数据源显示我的应用程序并且所有 Health 权限都已启用,但是当我尝试获取 DailyStepCountSamples 时,我得到一个空数组。

此外,我遇到的另一个问题是我需要在每次获取空数组之前启动 HealthKit,否则我会得到 'undefined'。一旦我再次启动 HealthKit,它将 return 'undefined' 并记录 'Steps: []'。我的代码有问题吗?

import AppleHealthKit from 'react-native-health';

export function useHealthKit({
    init = false,
    steps = false,
}) {
    const PERMS = AppleHealthKit.Constants.Permissions;

    const initiate = () => {
        let permissions = {
            permissions: {
                read: [
                    PERMS.StepCount,
                ],
            },
        };
        AppleHealthKit.initHealthKit(permissions, (err, results) => {
            if (err) {
                console.log(err);
            } else {
                console.log('Initialized!', results),
            }
        });
    };

    const getSteps = () => {
        let stepOptions = {
            startDate: new Date(2021, 1, 1).toISOString(),
        };
        AppleHealthKit.getDailyStepCountSamples(
            stepOptions,
            (err, results) => {
                if (err) {
                    return;
                }
                console.log('Steps: ', results);
            },
        );
    };
    init && initiate();
    steps && getSteps();
}

我通过执行以下操作来调用它:

const SomeView = () => {
    <View>
      <Button onPress={() => useHealthKit({init: true})>
        <Text>Initiate HealthKit</Text>
      </Button>
      <Button onPress={() => console.log(useHealthKit({steps: true}))>
        <Text>Console.log steps</Text>
      </Button>
    </View>
};

我整个下午都在尝试做一些非常相似的事情,结果和你一样。

为我解决问题的是使用 github threads

之一的这个奇怪的技巧

基本上,您需要将开始日期更改为 比您想抽样早一个月,因此在您的情况下,这将是 01/12/2020。

楼主说这是C代码中的一个问题。

我还在我的选项变量中为 includeManuallyAdded: trueperiod: 1444 设置了变量

对我有用,希望对你有用!