It has become more and more popular in the last weeks to write about one’s personal experience developing and submitting iPhone applications to Apple’s App Store, so I’d like to share how all of that worked out for me.
There has never been an official announcement on this website, but I have been writing an iPhone application for a little while now (Generally, there are very few iPhone application websites, since the website and promotional aspect of iPhone application development is handled by Apple through the App Store, where a description and screenshots of your application can be sent in together with your application and where – you don’t get that with your website – potential user can easily search for applications and browse them by category). Anyway, that application I’ve been developing is called Berlin Trip Planner (or Fahr-Info Berlin, which is the German name), and what it does is simple: it gets you from A to B, in Berlin, using public transport, at any time. If you have an iPhone, check it out, it’s free. And people simply love it, which makes me really happy.
To write, test and submit an iPhone application, there are a few prerequisites. First, you need the newest XCode version with all the iPhone frameworks (the SDK), so you can go ahead and write an iPhone application, which is not that different from writing a Mac application (only much more exciting). This step is easy, Apple made the SDK available for everyone in early spring. The SDK doesn’t allow you to put the application you’re writing on your iPhone for testing though, all you get is the iPhone Simulator, which is useful for most testing, but it’s definitely not an iPhone, it behaves differently in some cases, and it doesn’t simulate CoreLocation or the motion sensor at all. So you really want to get your application on a real iPhone to see how it works.
Step two: Apply for the iPhone developer program. Back in spring, Apple only allowed US developers to apply at first, but eventually extended the program to other countries, so I applied for the iPhone developer program in late spring. Then I waited. For weeks, and almost forgot about it. WWDC passed, where Apple announced they had admitted around 4000 developers so far, from the huge number of developers that had applied (I don’t recall the exact figure right now, but it was more than 10x of the 4000 admitted). I still felt bad about not being admitted, but I was in good company. To make up for it, two weeks later, or two weeks before the App Store launch, Apple told me I had been admitted and could pay my 80 EUR to Steve Jobs and his awesome devices fund. One day later, on the 27th of June, i (finally) got my hands on the beta of iPhone OS 2.0 plus a developer certificate and provisioning profiles that I could use to actually run my software on my iPhone. Great! But I still hadn’t written a single line of iPhone code by that time.
Now, to give credit where credit is due, the idea to write a trip planner application was inspired by Johannes Plunien, author of the brilliant MVV Dashboard Widget (which covers Munich public transport), when we exchanged some AppFresh-related support mails just about at that time. Living in Berlin, and being a frequent user of public transport myself, I know I had to have something like that. By the way, it’s always best to write software because you really need it yourself, because you don’t make wrong assumptions about what the users wants and what he needs, plus there’s a motivational aspect.
Apple had announced that in order to have your application admitted to the App Store itself by Friday, July 11th (the day of the grand iPhone 3G and App Store launch), you had to submit it until Monday the 7th, so I tried to get all pieces together as quick as possible. The BVG, Berlin’s public transport company, doesn’t provide a real web service to their online trip planner, so I had to write nasty code to scrape the HTML form, but fortunately there is a mobile interface which at least uses valid XHTML, so I could use an XML parser to save me some work. I finished that code using a DOM XML parser, the easier way to parse XML, only to discover that while the iPhone Simulator has a DOM parser, the iPhone itself doesn’t, and I had to rewrite it using a SAX XML parser, the more resource efficient way to parse XML. Needless to say, I was pissed, but motivation was high enough that I didn’t really care. The interface was easy in comparison, since in order to make it until the 7th I kept it really simple and didn’t think about usability much (Ooops!). There was even some time left to add cool features, like the ‘nearby stations’ list. For that I borrowed station data, including GPS coordinates of the stations of all major lines, from the very cool Uberbahn BVG/Google Maps Hack, which allowed me to list the stations in your proximity using the iPhone’s CoreLocation feature. Very neat!
To submit the application, you have to build and sign it using a different certificate, which is suited for App Store distribution, whereas your development certificate only works on your own iPhone. The whole process of getting the certificates and matching provisioning profiles, and getting XCode to use them, is somewhat tedious. If you’re lucky, it works, and the application runs on your iPhone, but if you aren’t, then you’re given a beautiful error code and nothing else, so it’s a pain in the ass to get it working again, since you don’t know what went wrong, except for, well, 0xE800003A. Apple could’ve certainly gotten this better, but it’s not rocket science either, and they have updated the documentation lately. Now all you need to do is come up with a description for the App Store, make some screenshots, and package everything up and upload it. That’s not too hard.
Now it’s time to wait, again. Six days later though, and this is different from the experience some other folks have made, my application was on the App Store, not from the first day as promised, but from the second. No mails from Apple, nothing rejected, everything just worked. The process was just the same with my first and (so far) only update, which got accepted in about a week. So, overall, my experience was pretty good. I don’t know how the average time to get accepted has developed in the last months, but it would be great if they could get that down to a few days instead of a week.
I’d like to finish this post by giving a quick preview of Fahr-Info 2.0, which I’m currently working on (I made the 2.0 up just now, I don’t know if it’s gonna be called that). Most of the changes are usability and user interface related, although it will also integrate with Address Book to give you the quickest route to your buddies, have a bigger station database to autocomplete your searches and offer Google Maps directions from your current location to any station. It’s far from finished, so some of that will definitely change, but here are some screenshots:



Posted in Trip Planner | 16 Comments »