Automators 39: Automating iBeacons

hey, Pushcut developer here.

thanks for this detailed post, there is a lot of good information in there!

the main issue in this case for Pushcut is that pretty much all of the techniques you listed require the app to “run”. for iBeacon-based background/location triggers you need to hand off everything to iOS, with basically zero configuration possibility. iOS decides when you are close enough to “enter”, and when you have “left”.

this is obviously for very good reasons (you do not want every app do its own beacon ranging in the background) but comes with these drawbacks…

you can do a tiny bit of background processing once iOS tells you are close, but you might get killed whenever iOS feels like it. so the possibility to measure signal strength until you are in a certain range cannot really be done reliably…

WWDC is going on right now, I’ll be checking if there are new OS features coming to consider here ; )

2 Likes

Ok, that makes more sense. I have heard some grumbling about this issue from several iOS app builders, but my coding knowledge is very limited, so I did not quite get it. Thanks for educating me!

Just curious: Is there some way to specify to the iOS what you would like to consider as “entered”? In other words, can you specify to the iOS whether to use “immediate”, “near”, or “far”? (These are the original Apple BLE terms, so I am assuming they are part of the iOS internal ranging protocol…might be a big assumption on my part though).

1 Like

as I understand it, the “near/far/immediate” stuff is all done through “ranging” - which requires the app to actively run (at least in the background). you cannot tell iOS to wake you up when you are “immediate” for example, only when you are “in range”…

this has the potential issue that iOS will eventually kill your background process, leaving you with somewhat unreliable triggers (because you of “entered” the beacons region, but failed to get close enough in time, ultimately never triggering in this case…)

long story short, I decided that I rather have a less accurate but reliable feature. I found it would be really hard to diagnose and explain to users why sometimes things do not trigger for background timeout reasons…

if anybody knows how to do background beacon ranging in iOS reliably, please let me know ; )

You have probably seen this already (and it might be outdated), but just in case:

I’m finding that Pushcut only fires off a local notification for me, based on detection of an iBeacon, once I unlock my phone. Should it be able to fire off that notification even when the phone is locked?

I get iBeacon notifications in Pushcut when my phone is locked. Any chance you have the system settings for notifications to Pushcut not set to display on your lock screen?

Thanks for the thought, but I do have that set. They show up on my lock screen, but not until Face ID unlocks the device.