How Background Location Works on iOS
Key principle: GeoHook does not continuously track your position in the background. Instead, iOS itself monitors your registered geofences and wakes the app only when it determines that a boundary has been crossed. If iOS does not wake the app, there is nothing GeoHook can do.
This is an intentional design by Apple to protect battery life and user privacy. It means:
- iOS decides when and whether to notify GeoHook about a location change. The app cannot poll your GPS in the background.
- Triggers may be delayed by several minutes, especially when the phone is stationary, the screen is off, or the system is under load.
- In rare cases, iOS may not deliver a trigger at all — for example, if you pass through a geofence very quickly.
When iOS does wake GeoHook, you will see a notification like “Entered location XYZ” — this confirms that iOS delivered the event. Everything that happens after (webhook execution, vehicle checks) is under GeoHook's control. Everything before is managed by iOS.
What to Expect in Practice
During extensive testing over several months, trigger accuracy at the geofence boundary was consistently within 10–15 meters. This is the normal case. Some testers experienced zero delayed triggers across months of daily use. Others occasionally saw delayed notifications from iOS, but these were exceptions, not the rule.
The delays and missed triggers described above are real possibilities, but they are edge cases. For most users, most of the time, geofence triggers work reliably and promptly.
Resetting Location Services
If you experience persistent irregularities with location triggers, resetting iOS location settings can help significantly. During testing, this drastically reduced issues for some users and completely eliminated them for others.
Go to iOS Settings → General → Transfer or Reset iPhone → Reset → Reset Location & Privacy.
Note: This resets location and privacy permissions for all apps on your device. You will need to re-grant location permission (“Always”) to GeoHook and other apps the next time you open them.
Low Power Mode
Low Power Mode significantly degrades location accuracy. When enabled, iOS reduces the frequency and precision of background location updates to save battery. This can cause:
- Triggers being delayed by 10+ minutes or missed entirely
- Geofence boundaries becoming less precise
- iBeacon and Tesla Phone Key scans being throttled or skipped
Recommendation: If you rely on timely geofence triggers, disable Low Power Mode. You can automate this with an iOS Shortcut (e.g. “turn off Low Power Mode when battery is above 30%”).
GeoHook will show a warning notification when Low Power Mode is activated while locations are being monitored.
Phantom Triggers (False Exit & Re-Entry)
You may occasionally see an exit event immediately followed by an entry event for the same location, even though you haven't moved. This is known as a “phantom trigger” and is caused by iOS, not by GeoHook.
It happens because:
- GPS accuracy fluctuates — your reported position can drift by 10–50 meters depending on signal quality, nearby buildings, or weather
- When you are near the edge of a geofence, this drift can briefly place you “outside” the boundary, then back “inside”
- iOS treats each boundary crossing as a real event and notifies GeoHook accordingly
How to reduce phantom triggers:
- Increase the geofence radius (e.g. 150–200m instead of 100m) so you are less likely to be near the edge
- Add an iBeacon at the location for precise area detection that is independent of GPS
- GeoHook has a built-in 5-minute cooldown per location — a second trigger within 5 minutes is automatically suppressed
Webhooks Not Firing
Checklist
- Location enabled? — Edit the location and check the toggle is ON
- Webhook enabled? — Each webhook has its own toggle
- Location permission? — Must be set to “Always” in iOS Settings → GeoHook
- Cooldown? — Wait 5 minutes between triggers, or use Simulate Entry/Exit in the location's debug section
- Vehicle condition? — If set to “Nearby”, ensure your vehicle is actually detected (Bluetooth must be on)
- Background App Refresh? — Must be ON in iOS Settings → GeoHook
No Entry/Exit Notification at All
If you don't even see the “Entered/Exited location” notification, then iOS did not deliver the event to GeoHook. This is outside the app's control. Check:
- Is your phone showing the correct location in Apple Maps or Google Maps?
- Is Low Power Mode off?
- Have you force-closed the app? (iOS cannot wake a force-closed app for geofence events)
iBeacon Not Detected
- Bluetooth enabled? — Required for all beacon detection
- Battery OK? — iBeacons run on coin-cell batteries that last 1–3 years
- UUID, Major, Minor correct? — These must match exactly
- Range? — Typical range is 5–30m depending on beacon type and obstacles
- Subscription active? — iBeacon features require a GeoHook subscription
Tesla Phone Key Not Detected
- Tesla must support Phone Key (all Model 3/Y, Model S/X from 2021+)
- Bluetooth must be enabled on your iPhone
- At least one Phone Key must be configured on the vehicle
- You must be within Bluetooth range of the vehicle (typically up to 10–15m)
- Subscription must be active
Delayed Exit Detection
You may notice that exit events are significantly delayed compared to entry events. For example, you leave a location but the exit webhook doesn’t fire for several minutes. This is expected behavior and here’s why:
When you approach an area, GeoHook temporarily activates precision monitoring (high-accuracy GPS) to detect the exact boundary crossing. Once you’re inside, GeoHook switches back to low-power mode to conserve battery. It would be impractical to keep precision mode running the entire time you’re inside an area — that could be hours or days.
This means that when you leave, GeoHook relies entirely on iOS to detect the exit. iOS delivers exit events on a best-effort basis and may take several minutes, especially if the phone is stationary or the screen is off. There is no API available to apps that would allow more precise exit detection using GPS alone.
Solution for precise exits: If you need reliable and timely exit detection, place a
stationary iBeacon at the location. iBeacon detection works independently of GPS — when your iPhone moves out of Bluetooth range of the beacon, the exit is detected quickly and accurately. See the
Optimizing Exit Behavior guide for a detailed explanation and the
Using iBeacons guide for setup instructions.
Known iOS Limitations
- Maximum 20 monitored regions — This is a hard iOS limit. It includes geofences and iBeacon regions.
- Minimum radius 100m for GPS-based geofences (iOS system limit). For smaller areas, use iBeacons.
- No guaranteed real-time triggers — iOS delivers geofence events on a best-effort basis, not in real time.
- Force-closing the app prevents iOS from waking it for geofence events. Always let the app run in the background.
Still Need Help?
Use the AI assistant in the app (Settings → Help & Support) for instant answers, or contact us directly:
Email: geohook.support@creative-it.com