Geofence

Contents

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

Ionic Geofence插件的安装(Installation)

ionic cordova plugin add cordova-plugin-geofence npm install @ionic-native/geofence

Ionic Geofence插件支持的平台(Supported Platforms)

  • Android
  • iOS
  • Windows
  • Windows Phone 8

Ionic Geofence插件的用法(Usage)

import { Geofence } from '@ionic-native/geofence';

...

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 then run ionic cordova platform add to recreate the platform directories.