Skip to main content

Geofence

Monitors circular geofences around latitude/longitude coordinates, and sends a notification to the user when the boundary of a geofence is crossed. Notifications can be sent when the user enters and/or exits a geofence. Geofences persist after device reboot. Geofences will be monitored even when the app is not running.

https://github.com/cowbell/cordova-plugin-geofence

Stuck on a Cordova issue?

Don't waste precious time on plugin issues.

If you're building a serious project, you can't afford to spend hours troubleshooting. Ionic’s experts offer premium advisory services for both community plugins and premier plugins.

Installation#

$ npm install cordova-plugin-geofence
$ npm install @ionic-native/geofence
$ ionic cap sync

Supported Platforms#

  • Android
  • iOS
  • Windows
  • Windows Phone 8

Usage#

React#

Learn more about using Ionic Native components in React

Angular#

import { Geofence } from '@ionic-native/geofence/ngx';
...
constructor(private geofence: Geofence) {
// initialize the plugin
geofence.initialize().then(
// resolved promise does not return a value
() => console.log('Geofence Plugin Ready'),
(err) => console.log(err)
)
}
...
private addGeofence() {
//options describing geofence
let fence = {
id: '69ca1b88-6fbe-4e80-a4d4-ff4d3748acdb', //any unique ID
latitude: 37.285951, //center of geofence radius
longitude: -121.936650,
radius: 100, //radius to edge of geofence in meters
transitionType: 3, //see 'Transition Types' below
notification: { //notification settings
id: 1, //any unique ID
title: 'You crossed a fence', //notification title
text: 'You just arrived to Gliwice city center.', //notification body
openAppOnClick: true //open app when notification is tapped
}
}
this.geofence.addOrUpdate(fence).then(
() => console.log('Geofence added'),
(err) => console.log('Geofence failed to add')
);
}

Transition Types#

Transition type specifies whether the geofence should trigger when the user enters and/or leaves the geofence.

Supported values#

  • 1: Enter
  • 2: Leave
  • 3: Both

Defining a Geofence#

Geofences are defined by an object that is passed to addOrUpdate(). Object properties are:

  • id: Any unique ID for the geofence. This ID is used to remove and update a geofence
  • latitude: Latitude coordinate of the center of the geofence radius
  • longitude: Latitude coordinate of the center of the geofence radius
  • radius: Radius from the center to the edge of the geofence
  • transitionType: Type of geofence transition to monitor for. See 'Transition Types' above
  • notification: Object. Options for defining the notification sent when a geofence is crossed
    • id: Any unique ID
    • title: Notification title
    • text: Notification body
    • openAppOnClick: Boolean. Whether to open the app when the notification is tapped by the user

Troubleshooting#

I get compile errors when I run ionic build ios or ionic run ios.#

This could be caused by the Cordova project directory in /platforms/ios not being named correctly. Try running ionic cordova platform rm <platform> then run ionic cordova platform add <platform> to recreate the platform directories.