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
-
Extract the SDK zip file to your project directory:
unzip impilo_mobile_sdk_react_native.zip -
Add the SDK to your
package.json:{
"dependencies": {
"react-native-impilo-mobile-sdk": "file:./react-native-impilo-mobile-sdk"
}
} -
Run
yarn install --forceto 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
- Open
ios/<YourApp>.xcworkspacein Xcode - Select the app target
- Go to "Signing & Capabilities"
- 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('BP:', reading.data.systolicInMmHg, '/', reading.data.diastolicInMmHg);
});
});
});
};
return <Button title="Start Discovery" onPress={startDiscovery} />;
}
Next Steps
For detailed API documentation and advanced usage, see the React Native SDK Guide.