react-native-device-kit
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

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

  1. In XCode, in the project navigator, right click LibrariesAdd Files to [your project's name]
  2. Go to node_modulesreact-native-device-kit and add RNDeviceKit.xcodeproj
  3. In XCode, in the project navigator, select your project. Add libRNDeviceKit.a to your project's Build PhasesLink Binary With Libraries
  4. Add $(PROJECT_DIR)/../node_modules/react-native-device-kit/ios/Frameworks to FRAMEWORK_SEARCH_PATHS.
  5. Run your project (Cmd+R)<

Android

  1. 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 the getPackages() method
  1. 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')
    
  2. Insert the following lines inside the dependencies block in android/app/build.gradle:
      compile project(':react-native-device-kit')
    
  3. Add the following repository to your app level build.gradle:
    repositories{
        flatDir{
            dirs "$rootDir/../node_modules/react-native-device-kit/android/libs"
        }
    }

Usage

import DeviceKit from 'react-native-device-kit';
 
const sdk = new DeviceKit()
 
sdk.register(process.env.MEDM_DEVICEKIT_LICENSE_KEY)
  .then(() => {
    // You're good to go.
  })
  .catch(() => {
    // Don't forget to provide a licence key!
  });

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 your Info.plist.
  • Currently MedM DeviceKit returns measurements only as XML (documented here), so you'll need to use something like xmldom.

Package Sidebar

Install

npm i react-native-device-kit

Weekly Downloads

4

Version

0.1.1

License

MIT

Unpacked Size

131 kB

Total Files

32

Last publish

Collaborators

  • baygeldin