A Solution to iPhone Backgrounding w/ Bluetooth

Dan Gish
2 min readApr 28, 2020

--

Countries are releasing distributed contract tracing/Covid-19 exposure alerting apps with a fatal flaw. They require an iPhone user to have the app active and on-screen, not allowing phone calls or internet browsing while in use — Bluetooth tracking fails when backgrounding the app. This causes users not to use it in the first place, and the entire concept of exposure notification breaks down.

With a week or two of hard work back in March, we built a working Bluetooth exposure notification system that solved iPhone’s backgrounding issue. The main secret? Simply a standard backend.

Here’s the deal: when backgrounded, an iPhone app can see (via Bluetooth LE scan) other iPhones and Androids. Android can see other Androids. But Android cannot see iPhones.

Let’s say an Android user tests positive for Covid-19. Their contacts are stored locally on the phone in distributed systems, and therefore connecting Android to the iPhones is impossible¹. But if the contacts are synced with a backend? An iPhone *did* see the Android, and the Android user’s contacts can be reconstructed from that. It’s simple.

The good news is that Apple & Google have teamed up to fix the backgrounding issue on their end. But it may be just one example of an entire class of things that become difficult-to-impossible without a standard backend.

¹ There is also a potential solution of iPhone connecting to a Bluetooth service on Android to notify it locally. But I couldn’t get this to work consistently.

--

--

Dan Gish

Retired computer geek with a little too much free time.