Skip to main content
Version: 1.0.0

Impilo Mobile SDK Integration Guide (React Native)

This guide covers the steps to add the Impilo Mobile SDK to your React Native application.

1. Unzip and Add the SDK​

  1. Extract the SDK zip file to your project directory:

    unzip impilo_mobile_sdk_react_native.zip
  2. Add the SDK to your package.json:

    {
    "dependencies": {
    "react-native-impilo-mobile-sdk": "file:./react-native-impilo-mobile-sdk"
    }
    }
  3. Run yarn install --force to install the dependency.

2. iOS Configuration​

Info.plist Permissions​

Add the following entries to your ios/<YourApp>/Info.plist:

<!-- Apple Health -->
<key>NSHealthShareUsageDescription</key>
<string>This app requires access to read your health data to provide health monitoring features.</string>
<key>NSHealthUpdateUsageDescription</key>
<string>This app requires access to save health data to your Health app.</string>

<!-- Bluetooth -->
<key>NSBluetoothAlwaysUsageDescription</key>
<string>This app requires Bluetooth access to connect to medical devices such as blood pressure monitors.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>This app requires Bluetooth access to connect to medical devices such as blood pressure monitors.</string>

HealthKit Entitlements​

  1. Open ios/<YourApp>.xcworkspace in Xcode
  2. Select the app target
  3. Go to "Signing & Capabilities"
  4. Click "+ Capability" and add "HealthKit"

Install Pods​

cd ios && pod install

3. Android Configuration​

Minimum SDK Version​

Update your android/app/build.gradle:

android {
defaultConfig {
minSdkVersion 26 // Health Connect requires API 26+
}
}

AndroidManifest.xml​

Add the following to android/app/src/main/AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Bluetooth permissions -->
<uses-permission android:name="android.permission.BLUETOOTH" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" android:maxSdkVersion="30" />
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" android:usesPermissionFlags="neverForLocation" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />

<!-- Health Connect permissions -->
<uses-permission android:minSdkVersion="28" android:name="android.permission.health.READ_BLOOD_PRESSURE" />
<uses-permission android:minSdkVersion="28" android:name="android.permission.health.WRITE_BLOOD_PRESSURE" />
<!-- Add other health permissions as needed -->

<application>
<activity
android:name=".MainActivity"
android:exported="true">
<!-- Intent filter for Health Connect -->
<intent-filter>
<action android:name="androidx.health.ACTION_SHOW_PERMISSIONS_RATIONALE" />
</intent-filter>
</activity>

<!-- Activity alias for Health Connect -->
<activity-alias
android:name="ViewPermissionUsageActivity"
android:exported="true"
android:targetActivity=".MainActivity"
android:permission="android.permission.START_VIEW_PERMISSION_USAGE">
<intent-filter>
<action android:name="android.intent.action.VIEW_PERMISSION_USAGE" />
<category android:name="android.intent.category.HEALTH_PERMISSIONS" />
</intent-filter>
</activity-alias>
</application>

<queries>
<package android:name="com.google.android.apps.healthdata" />
</queries>
</manifest>

Gradle Settings​

Add the native SDK modules to your android/settings.gradle:

// Include native-sdk modules from bundled React Native SDK
def rnSdkNativePath = new File(rootDir, '../react-native-impilo-mobile-sdk/android/native-sdk')
if (rnSdkNativePath.exists()) {
include ':native-sdk:orchestration'
include ':native-sdk:impilomobilesdk'
project(':native-sdk:orchestration').projectDir = new File(rnSdkNativePath, 'orchestration')
project(':native-sdk:impilomobilesdk').projectDir = new File(rnSdkNativePath, 'impilomobilesdk')
}

4. Basic Usage​

Initialize SDK​

import { SDKProvider, useSDKContext, SDK } from 'react-native-impilo-mobile-sdk';

// Wrap your app
function App() {
return (
<SDKProvider>
<MainApp />
</SDKProvider>
);
}

// In your component
function MainApp() {
const { sdk, initializeSDK } = useSDKContext();

useEffect(() => {
if (!sdk) {
SDK.initialize();
initializeSDK();
}
}, [sdk]);

return <YourContent />;
}

Request Health Permissions​

import { Platform } from 'react-native';
import { ReadingType } from 'react-native-impilo-mobile-sdk';

async function requestHealthPermissions(sdk) {
const types = [
ReadingType.BloodPressure,
ReadingType.BloodGlucose,
];

if (Platform.OS === 'ios') {
await sdk.appleHealth.requestAccess(types, types);
} else {
await sdk.androidHealthConnect.requestAccess(types, types);
}
}

Discover and Connect to Device​

import { useDeviceDiscovery } from 'react-native-impilo-mobile-sdk';

function DeviceScreen() {
const { discoverTranstekBBZ32BB01 } = useDeviceDiscovery();

const startDiscovery = () => {
discoverTranstekBBZ32BB01((device) => {
console.log('Found:', device.bluetoothIdentifier());

// Pair the device
device.pair((pairedDevice) => {
console.log('Paired!');

// Monitor for readings
pairedDevice.monitorForReading((reading) => {
console.log('Reading:', reading);
});
});
});
};

return <Button title="Start Discovery" onPress={startDiscovery} />;
}

Next Steps​

For detailed API documentation and advanced usage, see the React Native SDK Guide.