A couple of months ago, I was asked if I'd like to appear on Channel Five's "The Gadget Show" to take part in a challenge about iPhone applications with Jason Bradbury and Suzi Perry. I had only been developing iPhone apps for a short while but decided to enter into the spirit of the challenge by jumping head first into some of the trickier aspects of the iPhone SDK. The show and results of the challenge aired last night so I thought it was time for me to do a write up of the application and the process of building it.
The Early Stages
My day-to-day job involves me working as a freelance PHP developer but I'm a huge Apple fan and have owned every iteration of the iPhone. It wasn't long before I started toying with the idea of building iPhone apps, but the programming language was different to anything I'd ever done before. As a PHP developer, I found it very hard initially learning how to code in Objective-C (the coding language for iPhone apps). However, I purchased a couple of books including the excellent "iPhone SDK Development" and "Learn Objective-C on the Mac" and it wasn't too long before I became an iPhone developer.
After making it on to the App Store with Magnetic Flux & Metal Detector [iTunes Link], I was asked if I'd be interested in making the iPhone Application for "The Gadget Show". The initial concept was fairly simple: an application that allowed you to quickly choose from a list of questions to build a sentence which could be sent to your social networks. I agreed immediately and began working with my friend Liza Hayes on the design but hadn't realised exactly what I'd let myself in for.
In order to work as expected, the application would need to access an SQLite database on the device, be able to store custom sentences input by the user to that database, be able to build a sentence based on building an SQL query, and use the networking features of the iPhone to post to both Facebook and Twitter. I had done a lot of work with Facebook Connect and the Twitter API in my web development work and I knew that Facebook had a custom integration of its API for the iPhone. Even so, the networking problems were going to be tricky to overcome. To add to all of this, Jason suggested that he'd like a way to show off the accelerometer in the iPhone, and I was interested in the settings panes and how we could make the app easily customisable.
Developing the app
The iPhone 3.0 OS had just been released, yet as a registered iPhone developer I was working on iPhone 3.1 so there were enumerable problems in switching my Xcode environment and devices back and forth between the two versions. This was compounded with problems with Facebook Connect in that it had been written for the 2.1 OS and so was not 100% compatible with 3.0 leading to some caffeine fuelled Googling!
We had decided that the accelerometer could be used in what Jason called "Fingerless Functionality" whereby you could shake the phone left and right to navigate around the Social Beacon wheel, and then tip the phone up and down to progress backwards and forwards through the option. A simple shake of the phone would be enough to regenerate a sentence. These parts were all very straightforward (especially the shake, which can be detected with one line of code in OS 3.0) yet we came to a usability problem once we thought about sending the message. We couldn't use the shake or the down gesture, as these were used for regenerating the sentence on the final screen, so we needed to find another fingerless input method to post the message. The answer eventually came in the guise of the microphone: we could detect sound so that blowing into the mic would blow your message to the internet! Of course, this meant learning yet another aspect of the SDK that I had previously left untouched -- Core Audio -- but I'm always up for a challenge!
Distribution and the App Store
With various bugs overcome and a final test version working on my device, we were ready to distribute the app via the App Store. You may have heard some of the horror stories from the App Store -- it can take a very long time and you end up being rejected without reason -- but I have to say that I found the process to work incredibly well. It took 14 days from submission before Apple got back to us to say that the Application had been rejected due to a bug in the networking code (if you weren't connected to the internet the app would hang, or worse, say that the message had been sent). They were incredibly helpful and gave a detailed explanation of the problem as well as including some sample code to show how the networking portion could be handled better. After a couple of hours fixing it up, we resubmitted and the app was available around the world a few days later.
We were of course competing against Suzi's "Biker Blast-Off! [iTunes Link]" which was distributed at the same time, but crucially neither app was publicised on either Twitter or any other medium without mentioning the other with the same weight (so we'd invite people to try both apps). Within 3 days, Social Beacon was in the top 20 free social media applications whilst Biker Blast-Off was climbing up the overall free application charts worldwide and racking up a huge number of downloads. Interestingly, as both of our apps climbed higher, the reviews became more negative and I realised that this was true of nearly every app in the store. It seems that even if you are willing to give away a free product which could easily be charged for, people will still rip the idea to pieces (some comments on the game even saying "you'd need to pay me to play this game" - no pleasing some people!).
The show was aired last night (and is available to watch online) and has the full story as well as the final figures and the winner of the challenge, but the story of the apps continues. Since the show, both applications have now shot back up into the charts with both apps appearing in the top 10 free applications in the UK App Store. Social Beacon is currently sitting pretty at spot number 4 and I couldn't be happier with it.
A big thank you to the Gadget Show team (especially Colin Byrne, Chris Payne, and Jason Bradbury) and to Liza Hayes for her fantastic design work. It was a great experience and it looks like I'm going to be developing iPhone applications for a long time to come!