It’s been a while since I’ve been heavily involved with mobile phone development. About 5 years to be exact. During that time I’ve hacked all sorts of projects together in search for the ultimate GPS tracking phone. One project was called BlueGPS for both Symbian and Windows Mobile. Both of these mobile GPS apps depended on an external Bluetooth GPS receiver. There are many other devices that have built-in GPS receivers, some of which I’ve programmed, but most have limitations. One of the more capable devices was the basic Motorola i415 that runs on the Boost Mobile network. This phone is programmable in Java (J2ME) and costs a mere $29 with no contract. This should be a sign of where the industry is headed when you can get a mobile phone with GPS capabilities for such a nominal fee.

The main reason behind this post is to evaluate using the iPhone as a GPS tracking device. As you’re probably aware, Ublip sells low-cost GPS tracking solutions with a focus on simplicity. Our goal is to provide a Foundation that makes it simple to integrate practically any GPS tracking device with our core software stack. The term Foundation (with a capital “F”) is a product that we’re getting ready to publicly launch and we believe it provides tremendous value to any developer or organization building location based M2M applications. For more details on our Foundation check out this post.

Over the past couple of weeks I’ve been dabbling with the recently announced iPhone SDK. I’m a Mac fanboy and purchased the iPhone to help minimize the number of devices I carry around in my backpack (phone, iPod, GPS receiver, digital camera, and PowerBook). With the latest version of the iPhone firmware all iPhone users have the ability to triangulate their current location using cellular towers and WiFi access points. It’s not true GPS, but for a lot of applications (such as location based search) it’s good enough. So when I downloaded the SDK I was optimistic that Apple would expose the iPhone location API to developers. Thankfully, my assumption was correct.

Downloading the SDK was a beast. A 2GB beast. After my 8 hour download (mainly because Apple’s servers were getting hammered at the time) I had the installer sitting on my desktop. My first hurdle was the fact that the iPhone SDK was designed to run on Intel based Macs. Unfortunately, I purchased my PowerBook in 2005 and was frustrated that I didn’t have the latest hardware to run the iPhone SDK. If you’re a Windows developer then you had better switch or continue developing J2ME, Windows Mobile, and Symbian applications. The thought of having to spend $2,500 to upgrade to a MacBook Pro was out of the question, but the thought definitely crossed my mind. Luckily I stumbled across this great blog post about running the iPhone SDK on a PowerBook. About 4 hours later my iPhone dev environment was up and running.

At this point I was a bit skeptical that anything would actually work since this was an unsupported hack. But lo and behold, I was able to compile and run the good ole “Hello World” application in the iPhone simulator. As with any mobile phone development project the next logical step was to see the actual application running on the device. There’s something to be said for the instant gratification you get when holding a mobile phone in your hand with the application running on it (even if you only changed one line of code). I quickly found out that developing on the real device costs money and requires Apple’s approval. The registration fee is nominal ($99 for developers and $299 for enterprises), but the approval process takes time. Just this past week our application was approved and we now have the ability to deploy applications to our company iPhones.

During the beta period Apple limits developers to test on five iPhones. I think this is due to the fact that you have to reflash the iPhone with the beta version of the 2.0 iPhone firmware. So I went through this process, which scrubbed all the data from my device (not a big deal since everything was backed up in iTunes). There are some nifty enhancements to the 2.0 iPhone OS, but I won’t go into detail right now. After loading the new firmware, signing the application, and creating a provisioning profile for each iPhone, I was able to load the “Hello World” application on my device. Instant gratification.

The next logical step for me was to figure out how to integrate the iPhone with our web-based GPS tracking software. After several hours of hacking (spanning multiple evenings), learning a bit about Objective C and Xcode, I was able to get my iPhone integrated with the Ublip system. Now when I’m on the go I can report my location to our system just like any other GPS tracking device (Enfora, Orbit One, Digi, and CalAmp to name a few).

After getting the data into the system I was interested in seeing the accuracy of the location reading. If you look at the image below you can see the blip my iPhone reported (the one with the bubble window), while the blip below and to the right represents my actual location (as reported by my car). So the accuracy is within a couple hundred meters. Not too shabby. You actually have control of the accuracy through the iPhone CoreLocation framework, but for testing purposes I set this to 100 meters.

ublip_iphone.jpg

As for using the iPhone as a GPS tracker I think we’ll need to tweak, test, tweak, test and possibly wait for the next hardware version, which could possibly have an internal GPS receiver. Or maybe they’ll find a way to provide better accuracy using WiFi access points. There are a few other limiting factors that I’d like to point out:

- 3rd party applications developed for the iPhone cannot be run in the background
- When a user presses the home button on the iPhone the application is automatically terminated
- 3rd party applications cannot be automatically started when the iPhone boots

The reality is that each of the items mentioned above are essential for any successful GPS tracking application, but can be addressed in a future firmware update. That’s one of the beautiful things about the iPhone platform: a majority of limitations can be addressed in software. I’d also like to point out that all location readings that I’ve generated from the iPhone have been indoors. Because of using cellular and WiFi positioning technology the device doesn’t need a clear view of the sky. All in all, the iPhone SDK has tremendous possibilities and we’ll be working hard to tightly integrate it with the Ublip system.

If you’re interested in becoming a beta user of our iPhone application feel free to contact us our post a comment below. Also, if you have any suggestions on what type of location based applications you’d like to see on the iPhone then please feel free to share your thoughts.