rn-apple-healthkit icon indicating copy to clipboard operation
rn-apple-healthkit copied to clipboard

Not able to get Steps Data, show's empty array

Open AndresTIY opened this issue 5 years ago • 4 comments

Hi,

So currently I'm able to get permissions and weight data. I'm having trouble getting steps data. I'm using the getDailyStepCountSamples function, but the results is returning an empty array instead.

I'm using react-native: 0.61.2 react: 16.9.0 xcode: 11.2.1 if that helps.

Here's the code I'm using as well:

import AppleHealthKit from 'rn-apple-healthkit';

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

  const initiate = () => {
    let options = {
      permissions: {
        read: [PERMS.Weight, PERMS.Steps, PERMS.StepCount],
      },
    };
    AppleHealthKit.initHealthKit(options, (err, results) => {
      if (err) {
        console.log('error health kit', err);

        return;
      } else {
        console.log('Initialized!', results);
      }
    });
  };

  const getWeight = () => {
    let weightOptions = {
      unit: 'pound',
      startDate: new Date(2016, 4, 27).toISOString(),
    };
    AppleHealthKit.getWeightSamples(weightOptions, (err, results) => {
      if (err) {
        console.log('get weight error', err);

        return;
      }

      console.log('weight success', results);
    });
  };

  const getSteps = () => {
    let options = {
      startDate: new Date(2018, 1, 1).toISOString(), // required
      endDate: new Date().toISOString(),
    };
    AppleHealthKit.getDailyStepCountSamples(options, (err, results) => {
      if (err) {
        return;
      }

      console.log('steps success', results);
    });
  };

  init && initiate();
  weight && getWeight();
  steps && getSteps();
};

export default useHealthKit;

const JustAView = () => {
  const healthy = () => useHealthKit({ init: true, weight: true, steps: true });

  return (
    <View>
      <Button onPress={healthy}>
        <Text>Connect HealthKit</Text>
      </Button>
    </View>
  );
};


When button is pressed, the console logs look like: Initialized! 1 steps success [] weight success [{...}]

I also checked to verify steps and weight data exists inside the Apple Healthkit. Also, haven't been able to try this out on a physical device, only on the iOS simulator: iphone 11 - 13.2.2

Thanks for the help!

AndresTIY avatar Jan 16 '20 20:01 AndresTIY

Hey @AndresTIY try the new version 0.8v :)

terrillo avatar Jan 21 '20 15:01 terrillo

Hey @terrillo ! thanks for the update. after deleting and reinstalling the app, removing node modules & cache clean, updating the package number to 0.8, reinstalling pods, and a good ol' react-native start --reset-cache, it's still giving me an empty array :(

AndresTIY avatar Jan 21 '20 15:01 AndresTIY

@AndresTIY - Were you able to solve this problem? It doesn't even work on simulator for me.

bear1030 avatar May 07 '20 04:05 bear1030

Oh, I found what's wrong. I looked into the code. I see there is a option "includeManuallyAdded" and default values is false. I had to add this option with true and it worked for me.

@terrillo - I prefer you to update the guide describing all options.

bear1030 avatar May 07 '20 13:05 bear1030