#reactjs #react-native #healthkit
#reactjs #react-native #healthkit
Вопрос:
Я использую react-native-health для создания приложения для чтения ежедневного количества шагов. Я вручную добавил шаги в приложение simulator Health, и источник данных показывает мое приложение, и все разрешения на работоспособность включены, но когда я пытаюсь getDailyStepCountSamples, я получаю пустой массив.
Кроме того, еще одна проблема, с которой я сталкиваюсь, заключается в том, что мне нужно каждый раз запускать HealthKit перед получением пустого массива, иначе я получаю ‘undefined’. Как только я снова запущу HealthKit, он вернет ‘undefined’ И зарегистрирует ‘Шаги: []’. Что-то не так с моим кодом?
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 amp;amp; initiate();
steps amp;amp; 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>
};
Ответ №1:
Я пытался сделать что-то очень похожее весь день и получил тот же результат, что и вы.
Что исправило это для меня, так это использование этого странного трюка из одного из потоков github
По сути, вам нужно изменить дату начала на один месяц раньше, чем вы хотите выполнить выборку, поэтому в вашем случае это будет 01/12/2020.
В исходном постере говорится, что это вызвано проблемой в коде C.
Я также устанавливаю переменные для includeManuallyAdded: true
и period: 1444
в моей переменной параметров
Сработало для меня, надеюсь, это будет для вас!