An iPhone App from idea to App Store: in 24 hours

Late last Wednesday morning I wondered if it might be possible to create a fully-featured App from inception to App store. I thought that I might make something fun, but did not really think that I could get something App Store ready in that time. However, it has been some time since I uploaded something to the App Store (icons included) so it might well be a good idea to get some practice in doing so.

I’ve created a number of educational Apps that have hit the App store, some more successful than others. GCSE computer science includes hexadecimal, so why not make a quick activity where the student can match a hex string to the matching colour? Quick fire, and could be used as a discussion for a teacher on an interactive whiteboard.

A colour written as a hex string appears. Can you press the coloured block to identify it?

Could you identify these colours…in hex?

There are no large technical challenges here — the design and implementation were all about speed, perhaps just convert UIColor to a hex string by an extension. I’ll make sure my game is reusable by putting it in a container (I might use it for a larger colours match game later), and keep my business logic separate from the viewcontrollers as much as possible.

I’ve always been surprised that developers (even on tiny projects such as this) do not make their Apps universal for both iPad and iPhone. Although this App will be totally free (not even supported by adverts), restricting the audience is just leaving money on the table.

To make sure my App is compatible with both devices I decided to use constraints, and most importantly those around the container view (that house the main game screen rather than the UI) need to be proportional according the device that it is deployed within.

From a coding point of view, I used a UICollectionViewController for the blocks that appear. This means it is easy to detect when the user presses one of them (through didSelectItemAt) and display the elements which were sized according to the number of pieces the player wanted to play the game with. I centered items horizontally in the collectionview, but on the todo list is to centre them vertically too. I was short of time to meet my goal, I hoped that cutting corners like this would not prevent my App from appearning on the store!

The correct answer is generated randomly by a custom function that returns a UIColor. While playing the (almost finished) game I noticed that the game always presented the same answer! What could be going wrong? The randomColor function was actually really simple. I looked into the function, and wrote (too late) some tests. It worked perfectly.

I soon found the issue.

Rather than writing out a function stub for randomColor while developing, for speed I decided to just hard code a correct colour, and once I wrote randomColor would hook it up later.

Lesson learnt for the next App, more speed less haste!

Silly bugs: Ok if there is a lesson learnt!

The upload process involves creating icons, screenshots and making sure that the App is of suitable quality. I quickly produced these artefacts as I did not think that it would pass review — but why not try and find out?

At this point I’d spent around 4 hours on the App. Surely it isn’t possible to gain App store approval in 20 hours?

Apple’s review and publishing of the App to the store was lightning fast.

Waiting for review to ready for sale in 16 hours? Wow!

I can now see the fruits of my labour on the App store, and I’ll be able to watch those downloads fly in.

I wouldn’t say that this is a good idea for promoting your business, I didn’t spend sufficient time writing the description (one line?), the screenshots are awful and the whole App simple.

The interesting part is that if you have enough experience you can still get an App to Apple devices with what amounts to half a day of work, a Mac and a $100 developer licence despite Apple’s documentation making it look like the process is difficult and failure prone.

Want to make an App? I’d say just go for it!

The App is available on the App store at: https://itunes.apple.com/us/app/hexception/id1450356833?ls=1&mt=8, or you can see the GitHub repo over at hexception