iBeaconing

Posted by victor on January 13, 2015

I recently finished reading O’Reilly’s Building Applications with iBeacon. As it turns out, iBeacon is a deceptively simple technology, pretty dumb to say the truth. All the smarts are actually in the applications that use it. Very much like GPS which, notwithstanding the huge effort required to put a collection of satellites in geostationary orbit, after all is said and done, you end up with a couple of coordinates in the device, and then, the real smartness (or lack thereof) is in figuring out what to do with them.

I think it’ll take some time but we’ll see truly innovative applications shorty after it gets popularized. Of course, after reading the book I started imagining what kind of apps could I build without extensive server-side infrastructure. And I also cracked open Xcode and set to experiment with this technology.

The first disappointment came with the changes that Apple has made in Yosemite (which prevent a Mac machine from emitting an iBeacon signal, with tools like BeaconEmitter). Apple locked the Bluetooth API to prevent this sort of behaviour. It also prevented an iOS device from scanning for existing iBeacon emitters –aside: the way the iBeacon API works is that you scan for a set of specific beacon ids. But you cannot listen for generic ids. Not even going to the BLE API (which is what equivalent Android apps do) you can get a valid list of nearby beacons–, I’m not sure why Apple went this way, it’s certainly not an oversight but something done purposefully. My hunch is that it is this way to prevent abuse (such as someone cloning an iBeacon id), but the problem is that you only need an Android device, or a Raspberry PI, to circumvent this.

Anyway, this reading inspired me to look for existing applications. Not much is out there yet, however I found a nice nugget which I tweeted about: