I'm a heavy FourSquare user and am intrigued by Location Based Services at large. LBS related stuff will lead to the most significant behavioral changes on Earth since the network came online 15 years ago.
Just The Beginning
While we're all basking in what feels like an LBS revolution with so many devices being able to present latitude and longitude to developers these days, as anyone who's used those APIs before will tell you, we're way off from true value. There are two fundamental problems with device-side detection today: one, accuracy is all but useless, and two, hitting those APIs siphons battery life right out of the device. Both of those are significant barriers.
In an attempt to clear these hurdles that inhibit today's mobile LBS apps, Location Labs has built an iPhone app (Mayor Maker) that can auto-check you in to venues you define. They can do this with decent accuracy while not decimating the battery.
They leverage their own web service to setup geo-fences around your venues, then as you move across those fences their back-end sends the background running iPhone app a notification to the effect of "you just crossed one of your fences, do you want to checkin to your venue?" Location Labs knows where your handset is because they're embedded into the carrier (all of them) backbone network infrastructure, which itself knows where all the handsets are.
I don't know just how accurate the carrier's tower triangulation is. In past experience it's been pretty poor, but passive observation of Mayor Maker and their other app Family Map, suggest it's gotten a lot better. MM defaults to checkin when you cross a fence of 300' accuracy. That's way too coarse a setting, so I changed mine to 150' which is the most granular you can do, but that still feels too coarse. Ideally I'd like 10' (ten), but the fact that such a setting does not exist gives us insight into what the true accuracy capabilities are.
I configured MM to ask me before checkin, which allows me to confirm/deny. The default is to simply auto-checkin, but given when/where I get the notifications, if I let it checkin on its own, it would be a mess.
While battery life is no doubt "better" than a background running GPS pinging app, there is a noticeable dip. I'm going to guess that my battery life is reduced by somewhere in the neighborhood of 20%. The fact that it's so high is a bit of a mystery to me. Perhaps that's simply the cost of any background app on iOS.
The best location accuracy comes from true GPS devices (think bulky Garmin watches), and we all know that hardware isn't making it into our mobile devices anytime soon. We're stuck with broken tools for awhile which stinks. Leveraging the carrier network for LBS feels like the best approach until something better comes along.
Until then, I ask that any location based checkin app (Facebook Places, FourSquare, whatever) use Location Labs' API to leverage geo-fences and background auto location verification/notification. For users that can't handle the battery impact of even that, they can simply disable it and revert to the current metaphors. But if we're going to evolve, we should at least start playing with new ways of doing.