Another Programming Blog

(mostly iOS and Ruby on Rails)

I've Released My First iOS-app in the AppStore

My first app has appeared on the iTunes AppStore!

This is somewhat exciting. In part, because it’s a niche product which also has strong competition.

I have no idea if people will like the app and if anyone at all will use it. There could also still be bugs that I haven’t noticed which might turn off users or make them give me a bad rating. All I know is that I use it.

So what is it?

It’s one of those nightstand / alarm clock apps. It basically displays the time and wakes the user up with their own music. As a special feature I have added something that I like to do quite often: It displays images linked to from reddit.com as a slideshow.

Here is a screenshot:

Havana Clock Screenshot

It’s called “Havana Clock” and I have created a tiny rails page here that contains the app-store link.

This page also exposes an API for the app that simply collects usage statistics. From time to time the app will contact the server and supply basic information such as the iOS-version of the device it is running on. I thought it would be interesting to see how quickly users update to a new iOS-version and what app-features they use the most for example. I do not collect any personal information.

Making-of

The reason I started developing this app was that I was reading a book about objective-c programming when I was on holiday in Cuba. I have been using a competitor’s alarm clock app to wake up every morning so it was something that I would use myself. Which is good, because even if nobody ever downloads and uses the app, I will still have a cool alarm clock!

The project also uses a variety of concepts from the iOS-world, so I thought it would be a great app to learn some basics. And it was.

I started about a month ago and at the end of the first day I had an app that could display the time and show alternating background pictures. Because I was entertaining the idea to create a blogpost-reader app before, I already had written some code to fetch data off websites and a parser-wrapper for XML and JSON. So I took those classes and put them into the clock app. Voila, some tweaking later, it would display the images from the reddit-frontpage.

I added the rest of the app in the next two weeks, mostly working on it in the evenings. It was quite a lot of fun. Fun and learning combined. Also, I was suprised to find programmning objective-c so so enjoyable! (It really is, but that is probably because of the great work Apple put into developing the iOS-APIs, and ARC, which removes some of the housekeeping duties when programming.)

After three weeks it looked almost usable, but then I had this epiphany that I wasn’t happy with some of the design I had come up with. Especially the part that handles persistent storage (users’s alarms and settings). So I took some time to refactor a good part of the codebase.

Then about 90 - 95% was done and the most difficult time began. The time, when the cool, fun stuff is done and the boring, but neccessary, part begins. Polishing the app, tweaking the UI, putting in the in-app purchase payments. I just worked through it until I was at a point where I thought it could be released.

At this point I had 20 feature-ideas or so. Things that would be nice to have. But I decided to stop here and release, because it is easy to get stuck in development forever. And every new feature that seems easy enough might in fact take much longer than anticipated.

So I did a git tag 1.0 and submitted the binary to the AppStore.

Then the app got rejected.

Bummer, I thought. First app ever submitted and they reject it. But it turns out it was because I used a background mode to play music even if the app is not running.

iOS only allows multitasking in certain, limited ways and only for good reasons. One cannot just define a background mode in the .plist-file without a necessity.

So I sent Apple a clarification-email stating why I use that mode together with a step-by-step guide to reproduce and see the effect on their test-devices. I also quickly recorded a short clip with my phone that showed the effect, put it up online and sent them the link.

Two hours later the app was approved.

I think it might have helped to be very explicit with the explanation in order to make their job simpler.

Marketing

I haven’t come up with a marketing plan yet. I’ll wait and see how many users I will have without any marketing (after all, perhaps enough people will find the app using the AppStore search function).

I will probably log on to reddit and tell them that I have made this app. And ask them for feedback.

Which is something I hope I will get in any case. Feedback. So I can learn how to make this application better.

And who knows, right? Perhaps there are many people (incredible amounts, really) who like to have an alarm clock that displays pictures from reddit! And word will spread on its own! :)

But I am not that optimistic. First and foremost this was just about getting some iOS-experience. I am already coding another app, this time for my new iPhone 5 (I love that phone, great piece of hardware and software engineering). And it is as much fun as making the first one.

Updates

I will keep supporting Havana Clock for at least a year and fix bugs should I (or someone else) find any. I will probably release version 1.1 in January with a few improvements that I discarded in order to release before Christmas. And perhaps the 1.1 will also come with a new, super-secret background mode!

Finally

Developing for iOS has been more fun than I would have anticipated. I am still in love with Ruby and she doesn’t have to be jealous, because objective-c cannot match her beauty and elegance. But I would really enjoy to do more iOS-development in the future. Actually, very much so.

Thank you for reading and, again, here is the link: Havana Clock

P.S.: You can follow me on Twitter.

Comments

Webmentions