react-native-fitness
is a library that works on both iOS
and Android
with it you can interact with Apple Healthkit and Google Fit.
Currently the lib provides a set of API that you can use to read steps count or distance count for a given period of time.
Note: We're open to receive PRs that contains new features or improvements, so feel free to contribute to this repo.
npm install @ovalmoney/react-native-fitness --save
or
yarn add @ovalmoney/react-native-fitness
$ react-native link @ovalmoney/react-native-fitness
- Add the line below to your podfile then run
pod install
pod 'react-native-fitness', :path => '../node_modules/@ovalmoney/react-native-fitness'
- In XCode, in the project navigator, select your project. Add
libreact-native-fitness.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Add
NSHealthShareUsageDescription
to yourInfo.plist
in order to ask permissions.
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-fitness
and addRNFitness.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNFitness.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Run your project (
Cmd+R
)<
In order to make it run, it is necessary to turn on Health Kit
in the Capabilities
.
- Get an OAuth 2.0 Client ID as explained at https://developers.google.com/fit/android/get-api-key
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.oval.fitness.RNFitnessPackage;
to the imports at the top of the file - Add
new RNFitnessPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':@ovalmoney_react-native-fitness' project(':@ovalmoney_react-native-fitness').projectDir = new File(rootProject.projectDir, '../node_modules/@ovalmoney/react-native-fitness/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':@ovalmoney_react-native-fitness')
import Fitness from '@ovalmoney/react-native-fitness';
Fitness.isAuthorized()
.then((authorized) => {
//Do something
})
.catch((error) => {
//Do something
});
-
Fitness.isAuthorized() Check if permissions are granted or not. It works on Android and iOS >= 12.0, while it returns an error when iOS < 12.
-
Fitness.requestPermissions() Ask permission and return if user granted or not(Android), while, due to Apple's privacy model, always true is returned in iOS.
-
Fitness.getSteps(dates: { startDate: string, endDate: string, interval: string }) Fetch steps on a given period of time. It requires an
Object
withstartDate
andendDate
attributes as string. If startDate is not provided an error will be thrown. Setinterval
to decide how detailed the returned data is, set it tohour
otherwise it defaults todays
. -
Fitness.getDistance(dates: { startDate: string, endDate: string, interval: string }) Fetch distance in meters on a given period of time. It requires an
Object
withstartDate
andendDate
attributes as string. If startDate is not provided an error will be thrown. Setinterval
to decide how detailed the returned data is, set it tohour
otherwise it defaults todays
. -
Fitness.getCalories(dates: { startDate: string, endDate: string }) Fetch calories burnt in kilocalories on a given period of time. It requires an
Object
withstartDate
andendDate
attributes as string. If startDate is not provided an error will be thrown. -
Fitness.subscribeToActivity() Available only on android. Subscribe to all Google Fit activities. It returns a promise with
true
for a successful subscription andfalse
otherwise. Call this function to get all google fit activites and eliminate the need to have Google Fit installed on the device. -
Fitness.subscribeToSteps() Available only on android. Subscribe only to steps from the Google Fit store. It returns a promise with
true
for a successful subscription andfalse
otherwise. Call this function to get steps and eliminate the need to have Google Fit installed on the device.
- Platform Return the used provider.