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:




September 21st, 2008 at 1:39 pm
looks promising! Do you already have a ETA for the development?
being new in the city your app helps me ever day!
September 21st, 2008 at 3:56 pm
I also use the current version of your app. Interestingly enough, it is easier to use (on that small screen) than the BVG interface (on that big screen – never seen a web app wasting more white space).
Overall, all thumbs up for your devotion to user ergonomics.
I still have two questions though:
- Would you disclose overall uptodate figures of downloads of trip planner? It is interesting to all of us trying to get a feel for that market place
- Do you currently take into account any BVG or S-Bahn construction sites?
Regards, Tukamapa.
September 22nd, 2008 at 10:41 am
I want this for Munich please. Great work!
September 22nd, 2008 at 11:38 am
Simon, I don’t have an ETA.
Tukamapa, there are around 1000 to 3000 downloads per week, and yes, the sources I use take into account construction sites.
Patrick, I know people want an application like that for lots of cities, but I’m not currently working on that. Maybe in the future.
September 23rd, 2008 at 3:07 pm
Hi Jonas,
great work, looks really nice. Mind to share your code?
Regards,
Johannes
September 23rd, 2008 at 3:48 pm
hi jonas!
I’m german but for the sake of communication, my question in english
this app is a great idea since I live in berlin but I have been waiting for a dashboard widget to come out. can you, um…, “make” one?
October 29th, 2008 at 10:00 pm
It would be nice to get busses in “Nahegelegen”. Also it would be good to try to cooperate withthe BVG in order to keep the useful maps and add more – for example routes.
October 30th, 2008 at 10:07 pm
Hi Jonas, I was sad when I just saw, that the latest release of Fahr-Info did NOT contain the “details” view for the directions. Apparently BVG complained and you had to take it out (beside the BVG map)? My gosh, the details view is IMHO by far the most important feature in the app…
Why did BVG complain?? In this case, I guess I will stay on the old version and not update, even though the UI for Fahr-Info 2.0 looks so nice and promising!
Nice work!! But it seems that BVG suxx…
November 1st, 2008 at 12:44 pm
Hi Jonas, execllent (actually the best) app. It saved my day more than once. Dont’ care about the BVG-bureaucrats. Think diffrent!
Here’s to the crazy ones. The misfits. The rebels. The troublemakers. The round pegs in the square hole. The ones who see things differently. They’re not fond of rules. And they have no respect for the status quo. You can quote them, disagree with them, glorify or vilify them. About the only thing you can’t do is ignore them. Because they change things. They push the human race forward. And while some may see them as the crazy ones, we see genius. Because the people who are crazy enough to think they can change the world, are the ones who do.
November 2nd, 2008 at 11:32 pm
[...] here’s how the story goes: a 21 year old German programmer wrote a native app for the iPhone caled Fahr-Info Berlin (Berlin Trip Planner), which using the [...]
November 3rd, 2008 at 1:19 pm
[...] I was pretty clueless what to do with my iPhone developer privileges up until about two weeks before the App Store launch back in July. 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. I rushed to get the application accepted in time for the App Store launch, and that worked out pretty well. You can read more about the whole process on my blog entry, The App Store Experience. [...]
November 4th, 2008 at 3:28 pm
[...] als die Anbieter. Bestes Beispiel: der Fahrplan für die Berliner Verkehrsbetriebe. (BVG) Der Student Jonas Witt hat eine BVG Fahrplanauskunft für das iPhone entwickelt, die Software konnte kostenlos durch [...]
November 5th, 2008 at 4:40 pm
Hi there. I think it would be a great idea to make a Symbian S60 version of this app. S60 phones are much more common than iPhones, about which there is just this big hype, but which are available to few people actually. (The future is “Android” anyway, I guess.)
Any problems with Apples app-store are gone then too. Just offer a .jar or .sisx file to download and that’s it.
Something else: I’d suggest to search for a better name. “Fahrinfo” (without hyphen) has been used by BVG and VBB since ages, for web search as well as for their own (DOS, Windows and later Windows CE) software, which is available for free.
November 17th, 2008 at 10:08 am
Hallo,
interesante Sache. Der Verkehrsbetrieb in Potsdam wäre an einer Zusammenarbeit interessiert. Die Bereitstellung von Übersichts- und Detailplänen sowie GPS-Koordinaten stellt für uns kein Problem dar.
Ich bitte um Kontaktaufnahme.
Steffen Krause
February 6th, 2009 at 12:39 am
i’m interested in developing for symbian s60 v5. Any chance you will share your code?
March 4th, 2009 at 8:55 am
Hi -
Are you considering developing a Munich version?