Package Exports
- react-native-apple-healthkit
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-apple-healthkit) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-native-apple-healthkit
A React Native bridge module for interacting with Apple HealthKit data.
Table of Contents
Getting started
Installation (xcode)
npm install react-native-apple-healthkit@https://github.com/GregWilson/react-native-apple-healthkit.git --save
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-apple-healthkit
and addRCTAppleHealthKit.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRCTAppleHealthKit.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Click
RCTAppleHealthKit.xcodeproj
in the project navigator and go theBuild Settings
tab. Make sure 'All' is toggled on (instead of 'Basic'). In theSearch Paths
section, look forHeader Search Paths
and make sure it contains both$(SRCROOT)/../../react-native/React
and$(SRCROOT)/../../../React
- mark both asrecursive
. - Compile and have fun
Usage
Just require
the react-native-apple-healthkit
module and you're ready to go!
var AppleHealthKit = require('react-native-apple-healthkit');
...
let healthKitOptions = {
permissions: {
read: ["Height", "Weight", "Steps", "DateOfBirth", "BodyMassIndex"],
write: ["Weight", "Steps"]
}
};
AppleHealthKit.initHealthKit(healthKitOptions, (err, res) => {
if(err) {
console.log("error initializing healthkit: ", err);
return;
}
console.log("HEALTHKIT INITIALIZED!");
// ...
});
When the module has been successfully initialized you can read and write HealthKit data
var AppleHealthKit = require('react-native-apple-healthkit');
var _ = require('lodash');
...
AppleHealthKit.getCurrentWeight(null, (err, weight) => {
if(err){
console.log("error getting current weight: ", err);
return;
}
weight = _.round(weight,1);
// do something with the weight...
});
...
let myWeight = 200;
AppleHealthKit.saveWeight({weight:myWeight}, (err, res) => {
if(err){
console.log("error saving weight to healthkit: ", err);
return;
}
// weight successfully saved
});
Documentation
Permissions
The available HealthKit permissions to use with initHealthKit
Read Permissions:
Height HKQuantityTypeIdentifierHeight
Weight HKQuantityTypeIdentifierBodyMass
BodyFatPercentage HKQuantityTypeIdentifierBodyFatPercentage
BodyMassIndex HKQuantityTypeIdentifierBodyMassIndex
LeanBodyMass HKQuantityTypeIdentifierLeanBodyMass
Steps HKQuantityTypeIdentifierStepCount
Sex HKCharacteristicTypeIdentifierBiologicalSex
DateOfBirth HKCharacteristicTypeIdentifierDateOfBirth
DietaryEnergy HKQuantityTypeIdentifierDietaryEnergyConsumed
ActiveEnergy HKQuantityTypeIdentifierActiveEnergyBurned
Write Permissions:
Height HKQuantityTypeIdentifierHeight
Weight HKQuantityTypeIdentifierBodyMass
BodyFatPercentage HKQuantityTypeIdentifierBodyFatPercentage
BodyMassIndex HKQuantityTypeIdentifierBodyMassIndex
LeanBodyMass HKQuantityTypeIdentifierLeanBodyMass
Steps HKQuantityTypeIdentifierStepCount
DietaryEnergy HKQuantityTypeIdentifierDietaryEnergyConsumed
ActiveEnergy HKQuantityTypeIdentifierActiveEnergyBurned
Methods
isAvailable
check if HealthKit is available on the device
AppleHealthKit.isAvailable((err: string, available: bool) => {
if(available){
// ...
}
});
initHealthKit
initialize HealthKit. this will show the HealthKit permissions prompt for any read/write permissions that have not yet been selected by the user.
initHealthKit
requires an options object with HealthKit permission settings.
let healthKitOptions = {
permissions: {
read: ["Height", "Weight", "Steps", "DateOfBirth", "BodyMassIndex"],
write: ["Weight"]
}
};
AppleHealthKit.initHealthKit(healthKitOptions: object, (err: string, res: object) => {
if(err) {
console.log("error initializing healthkit: ", err);
return;
}
// healthkit is initialized...
// now safe to read and write healthkit data...
});
getStepCountForToday
get the the aggregated total steps for the current day starting and ending at midnight
AppleHealthKit.getStepCountForToday(null, (err: Object, steps: number) => {
if(this._handleHealthKitError(err, 'getStepCountForToday')){
return;
}
// use steps...
});
getLatestWeight
get the most recent weight value
AppleHealthKit.getLatestWeight(null, (err: string, weight: number) => {
if(err){
console.log("error getting latest weight: ", err);
return;
}
weight = _.round(weight,1);
// do something with the weight...
});
saveWeight
save a numeric weight value to HealthKit
saveWeight
accepts an object containing a numeric weight value with the key weight:
let saveOptions = {weight: 200}
AppleHealthKit.saveWeight(saveOptions, (err, res) => {
if(err){
console.log("error saving weight to healthkit: ", err);
return;
}
// weight successfully saved
});
getLatestHeight
get the most recent height value
AppleHealthKit.getLatestHeight(null, (err: string, height: number) => {
if(err){
console.log("error getting latest height: ", err);
return;
}
// do something with the height value...
});
getLatestBmi
get the most recent BMI data. the handler function will be called with a bmi
object containing value: number
, startDate: ISO8601Timestamp
, and endDate: ISO8601Timestamp
. The BMI value may be very old so the sample dates are provided as well. should apply this to all other RCT types
AppleHealthKit.getLatestBmi(null, (err: string, bmi: Object) => {
if(err){
console.log("error getting latest bmi data: ", err);
return;
}
if(bmi && bmi.value){
let d = bmi.startDate
let val = bmi.value;
// ...
}
});
getLatestBodyFatPercentage
get the most recent body fat percentage. the percentage value is a number between 0 and 100
AppleHealthKit.getLatestBodyFatPercentage(null, (err: Object, bodyFatPercentage: number) => {
if(this._handleHealthKitError(err, 'getLatestBodyFatPercentage')){
return;
}
// use bodyFatPercentage ...
});
getLatestLeanBodyMass
get the most recent lean body mass. the value is a number representing the weight in pounds (lbs)
AppleHealthKit.getLatestLeanBodyMass(null, (err: Object, leanBodyMass: number) => {
if(this._handleHealthKitError(err, 'getLatestLeanBodyMass')){
return;
}
// use leanBodyMass ...
});