Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eddieowens/react-native-boundary
Native implementation of geofencing/region monitoring
https://github.com/eddieowens/react-native-boundary
geofencing react-native region-monitoring
Last synced: 6 days ago
JSON representation
Native implementation of geofencing/region monitoring
- Host: GitHub
- URL: https://github.com/eddieowens/react-native-boundary
- Owner: eddieowens
- License: apache-2.0
- Created: 2018-07-12T06:22:19.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2020-05-10T16:20:02.000Z (over 4 years ago)
- Last Synced: 2024-12-06T15:51:47.666Z (7 days ago)
- Topics: geofencing, react-native, region-monitoring
- Language: Java
- Size: 197 KB
- Stars: 122
- Watchers: 6
- Forks: 72
- Open Issues: 34
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-react-native - react-native-boundary ★12 - React Native module to use geofences. Native implementation for iOS and Android. (Components / Geolocation)
- awesome-react-native - react-native-boundary ★12 - React Native module to use geofences. Native implementation for iOS and Android. (Components / Geolocation)
- awesome-react-native - react-native-boundary ★12 - React Native module to use geofences. Native implementation for iOS and Android. (Components / Geolocation)
- awesome-react-native - react-native-boundary ★12 - React Native module to use geofences. Native implementation for iOS and Android. (Components / Geolocation)
README
# react-native-boundary
A simple, native, and efficient geofencing/region monitoring react native library for both iOS and android.
## Usage
```javascript
import Boundary, {Events} from 'react-native-boundary';class MyComponent extends Class {
componentWillMount() {
Boundary.add({
lat: 34.017714,
lng: -118.499033,
radius: 50, // in meters
id: "Chipotle",
})
.then(() => console.log("success!"))
.catch(e => console.error("error :(", e));
Boundary.on(Events.ENTER, id => {
// Prints 'Get out of my Chipotle!!'
console.log(`Get out of my ${id}!!`);
});
Boundary.on(Events.EXIT, id => {
// Prints 'Ya! You better get out of my Chipotle!!'
console.log(`Ya! You better get out of my ${id}!!`)
})
}
componentWillUnmount() {
// Remove the events
Boundary.off(Events.ENTER)
Boundary.off(Events.EXIT)// Remove the boundary from native API´s
Boundary.remove('Chipotle')
.then(() => console.log('Goodbye Chipotle :('))
.catch(e => console.log('Failed to delete Chipotle :)', e))
}
}
```
## Getting started`$ npm install react-native-boundary --save`
### Automatic Installation
`$ react-native link react-native-boundary`
### Manual installation
#### iOS
1. In XCode, in the project navigator, right click `Libraries` ➜ `Add Files to [your project's name]`
2. Go to `node_modules` ➜ `react-native-boundary` and add `RNBoundary.xcodeproj`
3. In XCode, in the project navigator, select your project. Add `libRNBoundary.a` to your project's `Build Phases` ➜ `Link Binary With Libraries`
4. Run your project (`Cmd+R`)<#### Android
1. Open up `android/app/src/main/java/[...]/MainActivity.java`
- Add `import com.eddieowens.RNBoundaryPackage;` to the imports at the top of the file
- Add `new RNBoundaryPackage()` to the list returned by the `getPackages()` method
2. Append the following lines to `android/settings.gradle`:
```
include ':react-native-boundary'
project(':react-native-boundary').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-boundary/android')
```
3. Insert the following lines inside the dependencies block in `android/app/build.gradle`:
```
compile project(':react-native-boundary')
```
### Post Install#### Android
Add the `ACCESS_FINE_LOCATION` permission to your `AndroidManifest.xml` like so,
```xml
...```
#### iOS
Before iOS 11:
Add the following to your `Info.plist`:
- `NSLocationAlwaysUsageDescription`For iOS 11:
Add the following to your `Info.plist`:
- `NSLocationWhenInUseUsageDescription`
- `NSLocationAlwaysAndWhenInUseUsageDescription`## API
### Functions
Name | Arguments | Note
----------- | --------------------------------------------- | ---
`on` | event: [event](#events), callback: `function` | Triggers the callback when the `event` occurs. The callback will be passed an array of boundary ids as `strings`. Can be called in the background
`off` | event: [event](#events) | Removes bound event listeners
`add` | boundary: [boundary](#boundary) | Adds a `Boundary` that can be triggered when an [event](#events) occurs
`remove` | id: `string` | Removes a Boundary from being triggered. Boundaries will remain until `remove` or `removeAll` is called or the app is uninstalled
`removeAll` | `void` | Removes all boundaries and event callbacks.### Types
#### Boundary
Field | Type | Note
-------- | -------- | ----
`id` | `string` | ID for your boundary. Value that is returned when an [event](#events) is triggered
`lat` | `number` | Must be a valid latitude
`lng` | `number` | Must be a valid longitude
`radius` | `number` | In meters. It is highly suggested that the `radius` is greater than 50 meters#### Events
Field | Type | Note
-------- | --------- | ----
`ENTER` | `string` | Event for when a user enters a [boundary](#boundary)
`EXIT` | `string` | Event for when a user exits a [boundary](#boundary)