I'm curious how this works on iOS in the background? I admittedly don't know that much about it, but my understanding was that apps basically couldn't run code that constantly monitored things like this in the background on iOS.
I solved this by using the "Insomniac" approach - if you play a silent sound every 30 seconds or so, the scheduler will reset the sleep timer and the app will keep working. It drains the battery in around 1 day though.
Love the idea of the silent sound. Alas, that and the IP backgrounding is a bit clumsy. We pass through Apple's store guidelines without powering up the GPS.
It's my understanding that they can do so if they identify as a navigation app. It's hit-or-miss as to whether that will pass scrutiny by the app store reviewer though.
I'm also curious how they got the wifi scanning working on iOS, last time I looked at doing it myself Apple had moved/removed the private library in iOS5.