Security News
Fluent Assertions Faces Backlash After Abandoning Open Source Licensing
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
rn-contact-tracing
Advanced tools
React Native Library For Contact Tracing Over BLE (Bluetooth Low Energy) To Fight COVID-19 Pandemic
This is a react-native library for tracing close contact between 2 mobile devices by exchanging tokens over BLE (Bluetooth Low Energy).
The library eventually will do the following:
This is temporary implementation until Google & Apple will release the full Contact Tracing API solution.
Functionality | Andorid | iOS |
---|---|---|
Scan in foreground | :white_check_mark: | :white_check_mark: |
Advertise in foreground | :white_check_mark: | :white_check_mark: |
Scan in background | :white_check_mark: | TODO |
Advertise in background | :white_check_mark: | TODO |
Save scanned data into local DB | :white_check_mark: | WIP |
Return scanned data to JS | :white_check_mark: | TODO |
Pass scannng & advertising configuration from JS (intervals..) | :white_check_mark: | TODO |
Integration with tokens provider | TODO | TODO |
Deal with permissions and reboot/app update | WIP | TODO |
Tests | TODO | TODO |
Features for rssi calibration (GPS, Proximity) | WIP | TODO |
npm install
cd example/ios
pod install
For Android - npm run android
For iOS - npm run ios
In Android - Click on Request Location Permission button
yarn add rn-contact-tracing
or
npm install rn-contact-tracing --save
android/settings.gradle
include ':rn-contact-tracing'
project(':rn-contact-tracing').projectDir = new File(rootProject.projectDir, '../node_modules/rn-contact-tracing/lib/android')
android/app/build.gradle
dependencies {
...
implementation project(":rn-contact-tracing")
}
android/app/src/main/.../MainApplication.java
On top, where imports are:
import com.wix.specialble.SpecialBlePackage;
Add the RNLocationPackage
class to your list of exported packages.
@Override
protected List<ReactPackage> getPackages() {
return Arrays.asList(
List<ReactPackage> packages = new PackageList(this).getPackages();
...
packages.add(new SpecialBlePackage());
...
);
}
setConfig
getConfig
startBLEService
stopBLEService
startBLEScan
stopBLEScan
startBLEAdvertise
stopAdvertise
getScansByKey
getAllDevices
exportAllScansCsv
exportAllDevicesCsv
cleanDevicesDB
cleanScansDB
setConfig(config)
SpecialBle.setConfig(config);
Sets configuration options that will be used in scanning & advertising tasks.
Parameters:
Name | Type | Required | Description |
---|---|---|---|
config | object | Yes | See below. |
Supported options:
serviceUUID
- the ServiceUUID which identify the BLE broadcast you are going to advertise and scan for.scanDuration
- scanning duration in milisecscanInterval
- the time in milisec between every scanadvertiseDuration
- advertising duration in milisec (up to 180000ms)advertiseInterval
- the time in milisec between every advertisingFor Android
advertiseTXPowerLevel
- advertise TX power level docsscanMatchMode
- match mode for Bluetooth LE scan filters hardware match docsnotificationTitle
- the title of the foreground service notificationnotificationContent
- the content of the foreground service notificationgetConfig(callback)
SpecialBle.getConfig((config) => {
....
})
Gets the scanning & advertising configuration options that are currently defined in the library
startBLEService(config)
SpecialBle.startBLEService(config);
Starts BLE background task scanning for a specific - config is optional
stopBLEService()
SpecialBle.stopBLEService();
Stops the background service and all the tasks the service executing
startBLEScan(config)
SpecialBle.startBLEScan(config);
Starts BLE scanning in foreground - config is optional
stopBLEScan()
SpecialBle.stopBLEScan();
Starts BLE scanning
advertise(config)
SpecialBle.advertise(config);
Starts BLE advertising in foreground - config is optional
stopAdvertise()
SpecialBle.stopAdvertise();
Stops BLE advertising
getScansByKey(token, callback)
SpecialBle.getScansByKey(token, (scans) => {
...
})
Get list of scans events for a specific token, each object contains:
scan_id
- unique idscan_timestamp
- epoch time of the scan event inpublic_key
- token keyscan_address
- scaned device addressscan_rssi
- rssi strengthscan_tx
- tx strengthscan_protocol
- the protocol used to scan the data (currently GAP/GATT)getAllDevices()
SpecialBle.getAllDevices((devices) => {
setDevices(devices)
})
Get list of unique devices that were scanned, each object contains:
device_first_timestamp
- epoch time of the first scan eventdevice_last_timestamp
- epoch time of the last scan eventpublic_key
- token keydevice_address
- scaned device addressdevice_rssi
- rssi strongest valuedevice_tx
- tx strongest valuedevice_protocol
- the protocol used to scan the data (currently GAP/GATT)exportAllScansCsv()
SpecialBle.exportAllScansCsv();
Export the full Scans events DB to csv file
exportAllDevicesCsv()
SpecialBle.exportAllDevicesCsv();
Export the full Devices DB to csv file
cleanDevicesDB()
SpecialBle.cleanDevicesDB();
Clear all scanned devices
cleanScansDB()
SpecialBle.cleanScansDB();
Clear all scans
scanningStatus
- event can be true/falseadvertisingStatus
- event can be true/falsefoundDevice
- event has 2 params: {event.device_name, event.device_address}error
- {event.error_message}Due to COVID-19 pandemic, several groups and health authorities released apps that will help to identify and notify people that are at risk of exposure.
Some of these apps are written with RN and based on tracking user location which is not enough such as Hamagen, and they willing to add BLE based functionality.
There are lots of great libs that expose ble functionality for RN, i.e react-native-ble-plx & react-native-ble-manager but we wanted reduce the amount of dependancies as much as possible and exectue very specfic BLE functionality in background.
In addition, we looked at several great apps written for the same purpose in native, but each one of them is not written in a way that we could use as a stand-alone library. OpenTrace) - includes the full business logic (UI..) that we don't want to use. DP^3T Project - include cryptography logic that we prefer to replace
TBD
TBD
FAQs
React Native Library For Contact Tracing Over BLE (Bluetooth Low Energy) To Fight COVID-19 Pandemic
The npm package rn-contact-tracing receives a total of 10 weekly downloads. As such, rn-contact-tracing popularity was classified as not popular.
We found that rn-contact-tracing demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Fluent Assertions is facing backlash after dropping the Apache license for a commercial model, leaving users blindsided and questioning contributor rights.
Research
Security News
Socket researchers uncover the risks of a malicious Python package targeting Discord developers.
Security News
The UK is proposing a bold ban on ransomware payments by public entities to disrupt cybercrime, protect critical services, and lead global cybersecurity efforts.