Writing my first Mac App
I’ve been “trying” to get into programming for Apple products (whether OS X or iOS) for a while – i got an iPod Touch about 3 years ago in the hope that I could use it to entice myself to write an iOS app.
The difference between Objective C and the programming languages I had been familiar with so far was too great when I opened Xcode initially 3 years ago, and being busy with many other projects (and having recently moved to the other side of the world), I wasn’t prepared to spend the time to learn this new way of making apps. And it was made slightly harder due to the release of Xcode 4 at the time, which merged Interface Builder and Project Builder together. Nearly all tutorials and code samples I could find were still from the 3.x era of Xcode.
Fast forward 3 years, on a Saturday this past June, I finally decided to try and do something, no matter how simple. Since this would be my first serious foray into Objective C and Xcode, I really needed a simple project to try my hands with. Being a Hacker News reader (and only recently signed up for an account) – I’ve continously stumbled upon articles that explain how sitting all day long is bad for us, or how we need to take breaks every now and then to improve our focus and productivity… _Okay, so what would this app need?_ A timer, a menubar icon, a couple of dropdowns and the ability to play a sound. Fair enough, I thought – it was on.
I didn’t have the time to read books about Objective C or Cocoa, so I did the only thing that made sense: broke down my project into manageable pieces and then set out to learn how each piece is done in Objective C/Xcode.
Digging through Stack Overflow, YouTube and the Apple’s Developer website, I managed to find the answers on how to build each of the small pieces in the project. From drawing a circle, to putting an icon in the menubar, needless to say – the internet is awesome. When I started learning Delphi, I had a 1200 page book for it. Trying to find what you need manually in that book took exponentially more time than it takes to type “display an icon in the menubar objective c xcode”.
Promptly after having a very basic version available, I decided it was time to see if I can get it published in the App Store. I signed up for an account and waited to get approved, which took roughly 3-4 days. It took me a while longer to figure out how to apply all the certificates to my app, code sign it, and sandbox it, but by the end of the week, I had v1.0 pending for review in the App Store. Sandboxing required me to rewrite the “Start on login” code too, which mean I logged in and out of my Mac about 10 times until I got it right.
After a few days of waiting, my app was finally in the App Store! Exciting! It didn’t take long for Apple to review and publish the app, and the process was as smooth as butter. I had mentioned the App on G+ before and a few people expressed interest, so I decided to send them a few promo codes and see what they think.
With no marketing or any other mentions, I had on average 1 download per day. I thought that’s to be expected of an app with absolutely no marketing or mentions, and I wanted to get the word out there, but thought I should add a couple of things before I try to tip the review blogs.
First, I added the ability to change the sound, included 6 built-in sounds (freesound.org is a great resource!), made the menubar icon retina-ready, and slightly rewrote the timer & counting algo.
Once 1.1 was approved, I sent an email to Lifehacker, Lifehack & Mac.Appstorm. Alan Henry from Lifehacker was kind enough to review it and write about it. That gave me a nice spike of downloads for a couple of days and expectedly it’s now trailing off.
So far, the app has almost paid for my Mac Developer subscription and I’m wondering if I can take it further. Even if it doesn’t turn into a meaningful side income though, it was great to see how all of this works and what the potential is. Best of all, Xcode was fairly easy to get familiar with after all. It just needed a bit of willpower and dedication. I’m no expert, but at least I can comfortably make an app with a couple of dropdowns, a timer and a few sounds now.
I’m now working on my second Mac app (again a menubar utility), maybe I’ll write about it soon as well.
If you’re interested in more information about my whole experience or process, just hit me up on Twitter, or contact me using any of the methods on this site.
PS: Rest also has Notification Center support now (1.2). And I’m still working on a couple of more features that I’d like to add before I start debating whether to keep it lean and mean or if I should make it more feature-rich.
PPS: You’ve spent quite some time sitting while reading this article – why not grab Rest from the App Store to remind you to take a break?