react-native-device-kit
A React Native wrapper for MedM DeviceKit SDK. It allows to seamlessly connect to a great deal of medical sensors via Bluetooth and get such data as heart rate, blood pressure, temperature, spirometry, etc. And with React Native it's even better! Just think about it: one codebase that works on both major platforms (iOS and Android) and supports lots of medical devices right out of the box! Note that this is just a wrapper, so in order to use it you still have to purchase the original library.
Getting started
$ npm install react-native-device-kit --save
Injecting the MedM DeviceKit
In order for react-native-device-kit
to work you have to provide the original MedM DeviceKit library:
$ npx inject-device-kit --android /path/to/MedMDeviceKit.aar --ios /path/to/MedMDeviceKit.framework
You could as well add it to your package.json
scripts:
"postinstall": "inject-device-kit --android /path/to/MedMDeviceKit.aar --ios /path/to/MedMDeviceKit.framework"
Also, don't forget to embed MedM DeviceKit binaries into your application. In order to do that add MedMDeviceKit.framework
to your project in Xcode, then in "General" tab of your target add it to "Embedded Binaries" section.
Mostly automatic installation
$ react-native link
Alternatively:
$ react-native link react-native-device-kit
$ react-native link react-native-swift
Yes, react-native-swift
peer dependency is required unless you already use Swift in your project.
Manual installation
iOS
- In XCode, in the project navigator, right click
Libraries
➜Add Files to [your project's name]
- Go to
node_modules
➜react-native-device-kit
and addRNDeviceKit.xcodeproj
- In XCode, in the project navigator, select your project. Add
libRNDeviceKit.a
to your project'sBuild Phases
➜Link Binary With Libraries
- Add
$(PROJECT_DIR)/../node_modules/react-native-device-kit/ios/Frameworks
toFRAMEWORK_SEARCH_PATHS
. - Run your project (
Cmd+R
)<
Android
- Open up
android/app/src/main/java/[...]/MainActivity.java
- Add
import com.reactnative.devicekit.RNDeviceKitPackage;
to the imports at the top of the file - Add
new RNDeviceKitPackage()
to the list returned by thegetPackages()
method
- Append the following lines to
android/settings.gradle
:include ':react-native-device-kit' project(':react-native-device-kit').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-kit/android')
- Insert the following lines inside the dependencies block in
android/app/build.gradle
:compile project(':react-native-device-kit')
- Add the following repository to your app level
build.gradle
:repositories{flatDir{dirs "$rootDir/../node_modules/react-native-device-kit/android/libs"}}
Usage
; const sdk = sdk ;
Check out the full API in docs.
Notes
- There're no tests (sigh). MedM DeviceKit SDK itself is well tested, but writing tests for a wrapper is just too much pain: it needs a test react native app, SDK mock and also RNDeviceKit native module mock to test JavaScript side. Another solution is to use AWS Device Farm, but it's not free.
- If you're planning to use stream measurements (as opposed to scalar measurements like blood glucose) then you'll probably need your app to work in background. For Android you would have to create a foreground service. On iOS it's easier: just add
bluetooth-central
mode to yourInfo.plist
. - Currently MedM DeviceKit returns measurements only as XML (documented here), so you'll need to use something like xmldom.