Apple’s CoreBluetooth is pretty good. The implementation is high quality and it performs well. The consistent hardware and software means that you don’t get different behaviour from different models. It’s not perfect—the flow control delegates are ugly and the advertisement configuration is limited—but it’s basically nice to use. Android is generally the opposite: buggy, slow, and devices from different manufacturers work differently. There is an eyebrow-raising list on SweetBlue’s old wiki page.
One area Android is way ahead is Bluetooth 5. In case you missed it, Bluetooth 5 has several useful improvements over 4.2. The most interesting to me are the alternative PHYs, or modulation schemes. Traditional Bluetooth LE transmits at a rate of 1 Mbps. Bluetooth 5 adds a 2 Mbps PHY, so you can go twice as fast provided your signal is strong enough. There is also a Coded PHY, which includes forward error correction. This can operate at an effective rate of 500 kbps or 125 kbps, trading off speed for seriously improved range—reportedly over 1 km. In one video Nordic Semi put one of their chips on a drone and were receiving data at 750 metres with room to spare.
Way back in 2017 Google released Android Oreo with new APIs to configure your PHYs and simultaneously support both “legacy” and extended advertisement sets. Things are not so peachy on the hardware side. You can have a device certified for Bluetooth 5 without supporting those new PHYs, meaning that Android phones produced in the last few years are all over the place in their support. The situation finally seems to be improving. In my testing, the Samsung Galaxy S9 doesn’t support all the BT5 features but the S10 does.
Meanwhile, Apple hasn’t given us any control over Bluetooth 5 at all. Developers like me want to choose our PHYs. We want to use extended advertisements to transmit hundreds of bytes of data instead of ~23 plus a service UUID. We want to use periodic advertisements to avoid unnecessarily establishing connections. Hopefully, surely, finally this year we will see some updates on this at WWDC?
While I’m dreaming, hopefully they’ll fix News+ too. I want to like it but I just can’t countenance publishers pushing ads in the middle of content I’m paying for.