Archive for July, 2008

Monday Release Day

Monday, July 28th, 2008

Got to a very important milestone on a client project today. Today we pushed RunKeeper to the Apple iPhone Application Store, after a final day of testing and some minor revisions. Now we wait. Turns out that GPSTwit made its way (finally) through the application review process today and got published to the iPhone store. So, if we expect the same process, it should take about 2-3 weeks till RunKeeper is live for people to download it. There are plenty of people waiting for this application, and I’m really excited to see how it is received.

GPSTwit for the iPhone has only been live for a few hours, and already there are dozens of people all over the world using it to update people with their activities and their location. Its really interesting to watch these twits come in. You can click this link to see everyone using the application. Meanwhile, the iPhone version of GPSTwit has actually drummed up additional demand for the original Windows Mobile version, which actually has the added functionality of trip tracking. Trip tracking will transmit not only a single point, but an entire trip’s worth of data, so you can see the path you have traveled. I’ll implement this in the next version of the iPhone version.

iPhone GPS Development and API inadequacies

Thursday, July 24th, 2008

I’ve been writing an application for a client utilizing the GPS functionality of the second generation iPhone. I’ve found that the interface to the location data leaves a lot to be desired.

On the iPhone you have no idea where the location data is coming from. The iPhone uses a combination of cell tower triangulation, wireless access point mapping and GPS to get a fix on the phone’s position. With the provided SDK, all you get is a geographic point, and an accuracy. You can not ask the system how it determined the point; it would be nice to know if a point is based on satellite data, or if it is from another source.

I’d like more access to the raw data. On an HTC device running Windows Mobile, I’m getting much more precise data regarding my location, and I know the source of the location data is definitively the GPS satellites. I know the strength of my signal based on the number of satellites the GPS is reporting. None of this data is available on the iPhone; you only get what the Core Location Manager decides to give you, along with an accuracy level in meters, which is a bit vague.

Lets say that it has been 3 minutes since the Core Location Manager has given any position data to my application. I have no way of knowing why. Has the user not moved? Is there no location data available? Has the device gone into power save mode?

The inability for 3rd party application to prevent the iPhone from going to sleep is a huge issue for GPS based applications. When the device is asleep, our application stops receiving GPS positions, even if the device is in motion. The best we can do is include a notice to our application users that they must manually configure the device before using our application to prevent the device from going to sleep.

So now the user has configured the device to stay awake. Great… our application keeps running, we get the full path as the device is moved from one location to another over the course of a few hours. But the screen stays on, which is a huge battery drain. We don’t need the screen to stay on; just the GPS and the application. If Apple were to expose advanced power control features to third party developers, it would be extremely helpful.