0.1.2 • Published 4 years ago

react-native-trace-manager v0.1.2

Weekly downloads
2
License
MIT
Repository
github
Last release
4 years ago

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