iOS Location Tracking Implementation
Article Summary
Bohdan Orlov from Bumble reveals why iOS location tracking is way harder than most PMs think. Spoiler: you can't just set a timer and call it a day.
The Bumble engineering team needed to report user location every X minutes, but hit a wall with iOS's background limitations. This deep dive shares their battle-tested solution combining GPS, region monitoring, and silent push notifications to achieve reliable location tracking without destroying battery life.
Key Takeaways
- iOS apps cannot be woken by timers (a fact that confuses most PMs)
- Region monitoring is most precise battery-efficient API at 100m radius
- Silent push notifications wake apps when users stay stationary
- Solution delivered 3x more location data with only 2-4% battery usage
- Use two CLLocationManager instances to avoid stale location data
By combining GPS bursts, region monitoring, and silent pushes with configurable settings, Bumble tripled location reporting while keeping battery drain under 4%.
About This Article
Bohdan Orlov's team ran into a problem where changing locations would return stale data from hours earlier. This corrupted their tracking state, so they had to switch to using separate CLLocationManager instances to work around it.
They set up two CLLocationManager instances instead of one. One handled GPS tracking and the other handled less precise tracking. Guard statements filtered callbacks by manager identity to keep location events from getting mixed up.
The dual-instance setup stopped the stale data problem. Region monitoring still worked as a shared resource across both instances. This gave them reliable location delivery without the accuracy loss they had with their original single-instance approach.