A while back, I assumed responsibility for an initiative which includes iPhone development. Having had to bootstrap the project, I went through the various stages of learning, technology choices, getting the right material and establishing the basic methodologies for developing mobile applications, specifically on iPhone, in a company. I will try to describe in this post some of the more interesting issues I encountered during the beginning of the development, hopefully it would save someone some time.
Let’s begin – just to make it clear, you better have a Mac to develop for iPhone. There are Hackintosh solutions with questionable legality, there are Terminal Server solutions (like Aqua Connect), and if your iPhone is jail-broken, you can even use it as the development platform (again, not an Apple legitimate method), but the best experience for the developer and probably the only Apple approved way of doing iPhone development.
So, after having a Mac around, the first thing someone beginning to develop on the iPhone platform should probably do is to register with the Apple Developer Connection. In addition to the basic resources you need, and assuming you plan to publish your stuff on the App Store (there are other, at the moment not ‘legitimate’, options to publish your application, I will not discuss them here), this is where you’ll get you certificates and keys to test your application on your device. Developing using the iPhone simulator is free, but deploying on an actual device will require you to pay, currently it’s $99 yearly subscription. If you plan to have a team of developers, choose the Team option (costs the same..), and if you’re a company, note that you’ll have to prove it (by sending Apple the relevant documents), this, too, will cost $99 per developer. The Enterprise registration is for development of Enterprise applications (not to be published on the App Store).
Once you’re done with that, you can start reading the relevant manuals, there’s a pretty good Objective-C (the language you use to develop on iPhone..) guide there, there are some other guides online (line here), and I personally recommend having a physical book around (Programming in Objective-C 2.0 is the one we’re using, and I think it’s very good). Having done most of my programming in other languages, I found some ‘weird’ aspects in Objective-C, but that’ll probably have to wait for another post.
Now that the basics are established, I found a great way to get acquainted with iPhone development is the Stanford online course. Although it doesn’t cover iPhone OS 3.0, in my opinion it’s a great starting point. I think it’s important to get to know the tools and the environment, maybe create a simple app (or try to) before going through the course (it’s probably the equivalent of doing the exercises given throughout the semester), but it really allows the beginner developer to close some holes which are hard to close when you’re just going through documents and online tutorials which, in many cases, have varying levels of assumptions on the knowledge of the reader. This course aims for beginners and tries to makes sure everyone knows their stuff by the end of it, regardless of their original background.
In addition to the Stanford course, again I found a physical book very helpful, and the best one I found is Beginning iPhone 3 Development, which both includes changes from iPhone OS 3.0 (complementing the Stanford stuff), and has some very common and good examples for iPhone applications.
Ok.. That’s the beginning. Right after that comes the part where you actually do stuff and hit some walls. I’ll try to describe some of the walls I hit and how I got around, over, under or through them in future posts (promises, promises..).
Update: I found this list of online resources from StackOverflow which looks very helpful..