App icons on a mobile device

I built and published a couple of iOS apps!

It’s been a VERY long time in the making but I’ve finally built and published two iOS apps! Granted, they’re not the most complex apps, but I’m pretty proud of it anyway. Your wondering what’s the purpose of these apps, aren’t you? Here comes the sales pitch…

Have you ever wondered what the perfect horse or dog breed would be for you? Well wonder no more! The Perfect Pony and Perfect Pooch apps can tell you exactly that. Using ‘complicated science’, your name, favourite colour and star sign, Perfect Pony and Perfect Pooch can figure out the perfect breeds for you. Not only does it give you a nice picture of your perfect breed, but it also gives you an explanation of what makes your perfect breed so special. You can then share your results with friends on Facebook and Twitter.

Perfect Pony app displaying on a mobile device

A fair few years ago now, I started to wonder about how iOS apps were developed and after a little digging, I discovered Xcode, Apple’s  integrated development environment (IDE). It turned out that all of Apple’s own desktop and mobile apps are built using this, written in their very own programming language, Objective C. I was hooked and wanted to know more.

Off I went, looking for any good training resource I could find. I was pretty savvy with Javascript but Objective C looked different. Very different. It’s a language built on top of C, something I knew nothing about. In my search for learnings, I stumbled across raywenderlich.com. This site is an amazing resource for all things iOS development and I bought their training book to get started. I’m also lucky enough to have a lynda.com account through work and they have some amazing tutorial videos for beginners.

Objective C (Obj C) is weird, especially when your coming from straight from Javascript (JS). It’s an entirely object orientated programming language and JS isn’t. This is the part that can break one’s brain and although tutorials are a great place to start, nothing gets this stuff to stick like creating your own project. I needed a simple idea that would challenge me, but not so challenging I didn’t have a hope in hell of building it. Walk before you can run and all that. My wife and daughter spend all their free time caring for horses so they suggested an entertainment app that could tell them their perfect breed using some simple details. It was just the ticket. I’d need to make use of many of iOS built in classes like table views (those scrolling rows you see in many of Apple’s apps) and text views (things you tap on and type), and I’d also need to get my noggin into an object orientated state of mind.

After maybe a few weeks of working on the thing I got distracted. I can’t remember what it was that distracted me but I did. I put it down and left it for a while. A long while. By the time I came back to it I had the pleasant surprise of learning that Apple had released an entirely new programming language and Obj C was no longer the language to roll with. Cue a cold sweat and the realisation that I would need to rewrite everything I’d done. There was a silver lining to this cloud though in the fact that Swift was much more like JS. It took a while but I did it. My glorious creation was now written in Swift.

some code from the perfect pony app

Something I grew to love about writing Obj C and Swift is the way there is one way to do everything, as oppose to JS where there is a million. Don’t know how to do something? Search it and you should find one answer. The fix. This isn’t generally how problem solving works with JS. You’ll find multiple answers and a bunch of developers debating which is the best solution.

At this point I’d been learning and building for months. I got distracted again, put it down and left it for a bit. A long bit. I came back and guess what, Apple had released a new version of Swift. Here we go again. I rewrote the app in Swift 2. Not quite as much work as before but still annoying. I cracked on, got distracted and out came Swift 3. Roll on another rewrite. I only had myself to blame and to be honest, each time there was noticeable improvements. I’m not a dedicated developer but I could appreciate the changes Apple was making.

I hadn’t thought about the app’s  look yet but I was getting close to needing one. There wasn’t much going on here so it wasn’t difficult. I threw some nice duotone backgrounds behind basic UI elements. The real slog was finding a nice image for each breed and cloning out it’s edges to fill out the screen space.

Perfect pony screens

I didn’t expect the users of Perfect Pony would get too hung up on the app’s design so I didn’t stress too much about it’s look. It was an opportunity to try my hand at Sketch though, a UI design software that is apparently all the rage right now. I get where everyone is coming from. It’s tailored to UI design and you can tell. Throwing together layouts in Sketch is a breezy process and I like the fact that it’s light compared to bloated old Photoshop.

app screens in xcode IDE

Xcode has a nifty storyboard composer where you can arrange your screens and the transitions between them. You can also place objects like image views and text views, using constraints to govern where they sit in each screen size variation. That’s another  point I need to mention. All the flippin’ screen sizes you need to cater for. Perfect Pony works and displays reasonable well on the iPhone 5, iPhone X and everything in between.

At this point I was years in to it, but the thing was taking shape. Finally!

Screens from the Perfect Pooch app

I was ready to publish this bad boy so I blew the moths out of my wallet and paid for an Apple developer account. The process of getting it onto the app store was a little overwhelming at first glance but Youtube was my friend. You can find videos that cover every single step of the process. Developer documents aren’t the friendliest things to read and I find it much easier when someone explains this stuff in normal speak.

After publishing the first app I duplicated it, swapped out the horse images and info for dogs, and published a second. Each app contained two ad units, a banner and an interstitial. All I needed to do now was sit back and wait for the riches to roll in. After a few months of being on the app store I’ve made a grand total of about ten pounds in ad revenue. I’m still deciding on how to spend these riches and Admob doesn’t let you withdraw anything under their threshold of sixty so…

Hell of a learning experience though.

If you have a yearning to discover what your perfect horse breed is, you can download Perfect Pony here. Alternatively, if dogs are more your bag, you can download Perfect Pooch here.

Go on, I know you want to!