Bumble Bohdan Orlov Dec 12, 2016

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

Critical Insight

By combining GPS bursts, region monitoring, and silent pushes with configurable settings, Bumble tripled location reporting while keeping battery drain under 4%.

The article includes actual code for jailbreaking competitor apps to reverse-engineer their location strategies (and validate the approach before building).

About This Article

Problem

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.

Solution

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.

Impact

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.