Geofencing SDK Β· iOS Β· Android Β· React Native Β· Flutter

Geofencing that fires even when the app is closed.

Native background location for iOS & Android with drop-in bindings for React Native and Flutter. Enter, exit, and dwell events are delivered from a fully terminated app β€” no server-side tracking, no always-on battery drain.

βœ“ Keeps working after force-quit and reboot  Β·  βœ“ Unlimited zones under the iOS 20-region cap
🍎 iOS
.package(url: "…/geofence-ios")
πŸ€– Android
implementation("io.geofence:sdk:1.0")
βš›οΈ React Native
npm i @geofence/sdk
🐦 Flutter
flutter pub add geofence_sdk
The hard part, solved

Alive when your app isn't.

Most "geofencing" breaks the moment the app is backgrounded or killed. We don't keep a thread running β€” we hand the fences to the operating system, and let the OS wake your code up. That's the only way it survives a swipe-away or a reboot.

iOS Relaunched by the system

Fences register as native CLCircularRegion monitors held by locationd. Crossing a boundary relaunches your app in the background and fires the delegate β€” even after force-quit or reboot.

  • Region monitoring lives in the OS, not your process
  • Server-managed nearest-N sync stays under the 20-region cap
  • Significant-location-change re-syncs as the user moves

Android Runs in a dead process

Transitions are delivered by Play Services to a BroadcastReceiver via a PendingIntent. When your app is dead, Android cold-starts a process just to run it β€” the SDK notifies from persisted content and queues the event, no Activity required.

  • Headless notify from on-disk campaign content
  • Boot & app-update receiver re-registers dropped fences
  • Offline event queue uploads on next launch, idempotent
Everything included

A production geofencing platform, not just a wrapper.

πŸŒ™

Background & terminated firing

Enter / exit / dwell delivered whether the app is foreground, backgrounded, force-quit, or post-reboot.

∞

Unlimited zones, smart sync

Register thousands of branches. The device watches only the nearest ~18, re-syncing as it moves β€” no iOS cap headaches.

⬑

Polygon & circle zones

Draw exact neighbourhoods, malls, or campuses. Bounding-circle monitoring refined with point-in-polygon accuracy.

↻

Offline event queue

Events captured while offline are stored and uploaded later with idempotent de-duplication β€” nothing lost, nothing doubled.

πŸ›‘οΈ

False-event hardening

Duplicate-delivery debounce, boundary-flap suppression, dwell delays, and cooldowns so users aren't spammed.

πŸ”‘

Dashboard, analytics & licensing

Manage zones and campaigns, view visit analytics, and issue per-customer API keys with app-binding & usage caps.

Five minutes to first event

How it works

1

Install & drop in your key

Add the package for your platform and configure it with the API key from your trial signup. One import, three lines.

2

Define zones in the dashboard

Draw circle or polygon zones and attach notification campaigns. Changes sync to every device automatically.

3

Ship β€” and it just fires

Your users get notified at the right place and time, even with your app closed. Watch the visits roll into analytics.

import GeofenceSDK

let sdk = GeofenceSDK.shared
sdk.configure(baseUrl: "https://api.geofence.io",
              apiKey: "gf_live_…")

let status = await sdk.requestPermissions()
let fences = try await sdk.start()
// enter / exit / dwell now fire β€” even after force-quit.
val sdk = GeofenceSdk.getInstance(context)
sdk.configure(GeofenceConfig(
    baseUrl = "https://api.geofence.io",
    apiKey  = "gf_live_…",
))

val status = sdk.permissionStatus()
val fences = sdk.start()  // suspend; returns watched fences
import { GeofenceSDK } from '@geofence/sdk'

await GeofenceSDK.init({
  baseUrl: 'https://api.geofence.io',
  apiKey:  'gf_live_…',
})

await GeofenceSDK.requestPermissions()
const fences = await GeofenceSDK.start()
Simple, usage-based

Start free. Pay when you ship.

Every plan includes all four platforms, background firing, polygon zones, and the dashboard. You're only gated by scale.

Free

For evaluation & demos
$0
  • Self-serve API key in seconds
  • Up to 1,000 monthly devices
  • 10k events / month
  • All platforms & features
  • 30-day full-feature trial
Get a trial key

Enterprise

For scale & compliance
Custom
  • Everything in Pro
  • Volume device pricing
  • SLA, SSO & audit logs
  • Self-host / on-prem option
  • Dedicated support
Contact sales

Indicative pricing for the mockup β€” final tiers & limits are yours to set. Production keys are activated with a single email while you're pre-billing.

We're here to help

Talk to a human.

Questions about integration, pricing, or production access? Send us a note and we'll get back within one business day.

βœ‰ support@geofencekit.com
↳ Integration help ↳ Production keys ↳ Enterprise & SLA

We reply within one business day.

Ship location-aware in an afternoon.

Grab a free key, add the SDK, draw a zone. You'll see your first enter event β€” from a closed app β€” before your coffee's cold.

Start free trial β†’ get an API key Contact support