Five tips for prospective iPhone developers

I’ve been working on an iPhone game called Scribattle in my spare time since late last summer. After years of Mac OS X and previously OpenStep and NeXTStep programming, it seemed that stepping into the iPhone development path should be a piece of cake, and as far as the programming is concerned, it has been; However, there are a number of hoops that every iPhone developer has to jump through in order to get up and running, and get their software published on the App Store. Based on my experience so far, here’s some advice for anyone thinking about developing for iPhone.

1: Sign up for the paid developer program now

If you’re thinking about doing iPhone development, but haven’t signed up yet, then scurry immediately over to Apple’s site and sign up. After you sign up, there is a waiting period while Apple checks out your information, and this can take months. It’s not that the process actually takes them months, but rather that you end up in a big queue (or maybe just a pile) of applicants, and it takes Apple some time to get through them all. In my case, after waiting 6 or 7 weeks, I called Apple’s developer support number, had a brief conversation with a woman who told me that I was just about ready, and that I needed to send them a particular government form proving the validity of my company. 72 hours later I was up and running. I’m not sure if my call is what actually broke me free from the pile, or if I just happened to call right when they were about to call me, but in any case you should be prepared for a wait.

“But,” you may say, “I’m not even sure I want to develop for iPhone, so I’m not ready to pay the fee!” Yes, it costs $99, but don’t worry about that right now; You don’t pay until you’ve been approved, which can take months, and if at that point you decide you don’t want to continue, all you have to do is not follow the link they send you, not enter your credit card info, and not purchase the $99 developer license.

2: Download the developer tools, and start building something

While you’re waiting to be approved as a developer, go download the free iPhone SDK (requires you to create a free registration if you haven’t already) and start working with it. The SDK lets you do everything except build a real, installable app; Until you have purchased a developer license, you can only run in the iPhone simulator that is part of the SDK. This has some limitations, but works well enough to get you started, especially on your first app. Give yourself as much time as you need to get a feel for things, especially if you’re new to Xcode and/or Objective-C.

3: Objects in simulator may be slower than they appear

One caveat about the SDK’s iPhone simulator: The apps you build and run on the simulator are not “throttled” at all to simulate the performance of an actual device, so you may see things that seem to work great in the simulator, but fail miserably on an actual device. The first app I was toying with, doing some simulated physics and drawing everything with CoreGraphics, was nice and smooth on the simulator, but as soon as I put it on a device, it was horrendously slow. For your first apps this may not be an issue, but it’s something to be aware of if you’re working on anything time-critical such as a game

4: Learn to love CoreGraphics, but use OpenGL anyway

Apple’s drawing API for both Mac OS X and iPhone, CoreGraphics, is really nice; a modern C interface to a great compositing engine. For basic drawing, including simple animation in response to user actions, this is great. The problem is that if you need more performance (for example, for a game that you want running at 60 fps), CoreGraphics will probably not cut it. I performed a simple test, of just drawing a screen-size rectangle full bore, with nothing else going on (no game engine running, and nothing else being drawn), and I could barely get more than 100 draws/second. So, I started working with OpenGL, using some of Apple’s example code as a starting point. The same test, drawing a full-screen rectangle, easily surpassed 10,000 draws/second! Most people associate OpenGL with 3D graphics, but it works equally well for 2D, so if most of your drawing consists of compositing bitmaps, as opposed to using the curves, fills, and other goodies you get with CoreGraphics, OpenGL will be a huge win for you.

5: The first app you release should be non-free “shovelware”

While you’re pouring your heart and soul into your first real app, do yourself a favor and quickly slap together a meaningless app that takes basically zero time to create, and offers nearly no functionality. Whether you create the 23rd flashlight app, or the 47th fart app, or some whole new concept in useless crapdom is up to you. The reason for doing this is that in spite of all the hardship you went through earlier to get approved as an iPhone app developer, there is still another hurdle: Your sales contract. You probably know by now that each app you release is going to sit in a queue until apple approves it for sale, a process that seems to usually take about a week. For the very first app you release, however, Apple needs to “finalize” your sales contract. They won’t do that until you have a non-free app submitted and approved for sale. As of this writing, I’m still waiting for my contracts to be finalized. It’s been 9 days since my app was approved for sale, and now I’m just twiddling my thumbs, waiting for Apple to do whatever it is they’re going to do. Seems like it shouldn’t be too hard to rubber-stamp the same sales contract that they have for every other iPhone developer, but I’m not a lawyer, so who knows. The point is that if i’d released some crappy shovelware months ago, I wouldn’t be in this predicament, and you’d already be able to go and buy Scribattle in the App Store!

There you go. Hopefully these tips will help some aspiring iPhone developers to get up and running with a minimum of delay. Now go sign up for the dev program, and keep your eyes peeled for Scribattle!