So how does GPS *actually* work?

updated 11 months ago

Users increasingly demand apps that are location-aware, but working with location services can be frustrating. The Core Location API is fairly straight-forward, but the data you get back from it often isn’t. Accuracy of your user’s location varies wildly, seemingly at random. Sometimes your app uses almost no resources, and sometimes you find yourself flooded with complaints that you’re killing your users’ batteries. Dealing with location often leaves even experienced developers scratching their heads, particularly as location services APIs can feel like black boxes with no obvious debugging strategy.

This talk is intended to be a soup-to-nuts exploration of geolocation technology, both in general and specifically on an iPhone.

We'll start with a deep dive into what actually makes location services tick at a conceptual level. What is the math that enables GPS? What's AGPS, and how does your phone use cell tower + WiFi data to improve the accuracy of your location? What are "urban canyons", and why is location data often more inaccurate in cities despite there being stronger cell service than rural areas? On a grander scale, we'll look at the development of location technology over time, from the innovations of 18th-century clockmakers and earlier up to the 1960s US defense research that directly led to modern geolocation. The goal is to give you a deeper understanding of how modern smartphone location services work under the hood.

From there, we'll dive a little more into practical specifics of dealing with location services on mobile. When faced with building location-based functionality that could be built using various different services (standard AGPS location, visit detection, beacons, indoor WiFi-based fingerprinting, etc), how do you decide what the correct solution is? We'll touch specifically on common gotchas for building out location-based functionality, such as managing battery usage and testing strategies, sharing best practices from my years of experience building location-aware apps. If the first half of the talk is building up a conceptual understanding of the underlying foundational technology, the second half is about building up a practical toolbox of strategies for doing anything more complicated than a “hello world”.

More advanced developers will get the most out of this talk, particularly those who've built apps with location-based functionality, but it's intended to be approachable and understandable to all.

Suggestions