Monday, 13 May 2013

The Connacht Clan iOS App


It's pretty demoralising to wake up at 7am and the first thing you see is a rejection email from the App Store. But that's what I got for deciding to write an App in the first place. My own fault really.

About a year ago I decided to take my Objective-C learning up a level and find out what all the fuss was about with iPhone app development. It turned out to be surprisingly easy thanks to fairly good documentation, an XCode development environment that has much improved since I last used it and, above all, an excellent development course available on iTunesU courtesy of Stanford University. If anyone is starting out with iOS development and is unsure of where to start I cannot recommend that course enough. Search for "iPhone and iPad Application Development" on iTunesU to get started.

iPhone in hand, and enough starting knowledge to make me dangerous all I needed was a pet project. It wasn't long before I decided on something to do with my rugby team, Connacht. I got in touch with the supporters club and asked if they would like an App they could offer to their fans. They were very happy to let me run with it, which was great of them, they could easily have declined.

The reasons I chose Connacht, and specifically the supporters club, were two-fold. Firstly, it's my team, it's a no brainer I want to do something for them, they take up a lot of my time. Secondly, well it's about sending a message. As a team we're frequently put down and that leaves us, the fans, with a chip on our collective shoulders. We have reason to moan, and we moan a lot.

I wanted to do something positive for the team and the fans, I've enough of moaning. I wanted to show that we can either continue to complain, or we can start doing things for ourselves. Getting a supporters club app out there was part of that. I hope it will inspire other Connacht fans to look for opportunities to support the club in new ways, and be more upbeat and positive, rather than our usual pessimistic selves.

Lesson 1: There's a lot more to iOS development than meets the eye, even if it looks easy to begin with.

Once I started development I discovered I'd promised way more than I'd be able to deliver in time. It was March 2012 and I had planned to have the app ready for the start of the season in September.

Ok, so first lesson learned, then. I went with dropping certain things I wanted on the App in favour of getting a less featured version on the App Store earlier, figuring I'd be able to post updates as the year went on. If I stuck with my original plan I wouldn't be able to get the App out until almost half way through the season.

Between March and September, for about 2 hours a day on weekdays and 10 hours on the weekends my App took shape. On the way I added MVC, XCode Storyboards, JSON, RSS, iOS5, removed iOS5 & added iOS6, various Cocoa Touch frameworks and lots and lots and lots and lots of delegates to my brain. All in the name of fun. And it was. My girlfriend thought I was nuts, but that's pretty normal.

September dawned and I was ready. The App was packaged, artwork was created thanks to my brother, absolutely no one else's opinion was asked and off everything went for review.

Lesson 2: Your first App isn't as good as you think it is.

Ok, so it works like this. Your App is in a queue for a few days. That's ok, they get so many Apps that it's only to be expected. A few days after sending you App in to be reviewed you will get an email telling you that the review process has started. I got all excited...

...and shocked at how quickly I got a rejection. I lasted about 3 hours. I probably should have asked someone else's opinion.

Looking back my first version of the App was pretty awful, so I can't complain. In fact I didn't take the rejection to heart, everything in the rejection letter was spot on.

Back in the saddle a major overhaul took place. The look and feel was tightened up, better font sizes were used, optimisations for Retina displays were made, a whole lot of stuff happened. And it took months, way longer than I was expecting due to not only the problems highlighted in the review process, but as I developed I added to my understanding of the 'right' way to do things I had previously done in a haphazard way. Lots of refactoring was done.

With a refactored, but still slimmed down, version of the App ready I sent it in again. This time I managed 24 hours before getting a rejection email. Damn.

Lesson 3: Do it all

It turned out everything I wanted to add later was what they wanted to see Right Now (tm). All the extra bit and bobs that I didn't have time for were considered essential to a proper App. So whether I liked it or not, the App wasn't going to be accepted when reduced. I had to do everything I had originally planned to do, and then some more.

And it got worse. Half way through version 3 iOS 6 was released. All of a sudden new functionality was available, some really nice things like UIActivityViewController which shows a graphical selection of apps to use to share data on Twitter, Facebook etc.

I was left with a decision, stick with iOS 5, move to iOS 6 to get these new features, or handle both cases.

In the end I went with moving to iOS 6. I don't have the time to maintain support for two operating systems and two different ways of providing the same functionality to users. Not on a hobby project. And the new features in iOS 6 were so much easier to use it saved me a lot of time.

As a result the code went from 8,000 to 6,000 lines. Much easier to maintain.

Lesson 4: Learn Android

So, yeah, big fanfare, the App was accepted and after 11 months effort 200+ people have downloaded it. Not a lot of people, really, but after going to a Connacht match a few weeks ago I noticed one thing. everyone's got Android phones, which explains why.

If you really want to create a smartphone app, you're going to have to create one for both platforms. There's no getting out of that, at least there isn't for an App like mine that wasn't necessarily ambitious in terms of what it delivered, but turns out to be ambitious in the size of its target audience. Connacht get 5,000 fans through their gates for games, 7,000 on a really good day. They have 15,000 twitter followers and almost 30,000 likes on Facebook. I wanted to get an app out those fans, and I'm only half way in terms of the number of platforms I need to support.

Edit: I've made the App code available on bitbucket

3 comments:

  1. Fair play dude, you put a lot of effort in for little to no thanks and no shortage of slagging from the android afficionados (myself included).
    Kudos,
    Anthony

    ReplyDelete
    Replies
    1. Thanks for the comment Anthony. I hope I don't come across as looking for sympathy or thanks, that's not my intention. I just wanted to describe the process and, as I say above, get other people thinking about what they can do.

      Delete
  2. Well done Wazza... Hope you got something out of it as well. As an Android user I only really get to play around with it on other people's phones but it really is a classy App.

    ReplyDelete