react-native-trace-manager
v0.1.2
Published
TraceManager
Downloads
7
Maintainers
Readme
React Native Trace Manager
React Native BLE Scanner and Advertiser for IOS and Android
Installation
npm install react-native-trace-manager
Android
In your android/app/src/main/AndroidManifest.xm
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<receiver
android:name="com.reactnativetracemanager.BootReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<service
android:name="com.reactnativetracemanager.TraceService"
android:enabled="true" />
Ios
Turn on background mode
In your info.plist
<dict>
<key>BGTaskSchedulerPermittedIdentifiers</key>
<string>org.reactjs.native.example.trace</string>
<key>CFBundleDevelopmentRegion</key>
<key>NSBluetoothAlwaysUsageDescription</key>
<string>Trace use bluetooth to track nearby devices.</string>
<key>NSBluetoothPeripheralUsageDescription</key>
<string>Trace use bluetooth to track nearby devices.</string>
<key>UIBackgroundModes</key>
<array>
<string>bluetooth-central</string>
<string>bluetooth-peripheral</string>
</array>
Usage
First, init trace service with your uuid (Ex. 123e4567-e89b-12d3-a456-426614174000)
import TraceManager from 'react-native-trace-manager';
// Rationale options for localization request permission on android
TraceManager.init(uuid, rationale);
interface Rationale {
title: string;
message: string;
buttonPositive: string;
buttonNegative: string;
buttonNeutral: string;
}
Now you can call trace methods
// Start advertising with an username (A string with least than 7 character)
TraceManager.startAdvertising(username)
// Stop advertising service
TraceManager.stopAdvertising()
// Start discovering service
TraceManager.startDiscovering()
// Stop discovering service
TraceManager.stopDiscovering()
Using react hook to get the nearby list
import { useNearbyList } from 'react-native-trace-manager'
//..
const nearbyList = useNearbyList();
Don't want to use the hook
import { traceEventEmitter } from 'react-native-trace-manager'
// Android
traceEventEmitter.addListener(
'scanResultUpdated',
({ usernames }) => {
// usernames is an array of string
}
)
// IOS
eventEmitter.addListener(
'userChanged',
({ users }) => {
// users is an array of object with name
}
)
License
MIT