iPhone SDK
The iPhone SDK has finally arrived. Although the community has figured out how to put together apps in some very awkward ways, there's a real environment now. Not just real frameworks, but profiling tools, drag-and-drop UI creation, remote debugging, and a simulator. And normal people can run the apps.If you haven't watched the iPhone SDK event video, you should probably check it out. It's not a visual press release. There are some amazing demos in there that stretched my imagination of what's possible. The most interesting point, by the way, is that most of the demos are by third parties — many of which have never written Mac software before.
The Basics
1. The iPhone SDK itself is free. You just need to create an account. The formal iPhone developer program is $99. Enterprise customers that want to distribute apps on their own terms can join a different program for $299.
2. iPhone apps are written in Objective-C using Cocoa Touch — a Multi-Touch variant of the Cocoa framework. The development environment is Xcode and Interface Builder on Mac OS X.
3. Distribution is handled by Apple. Developers set the price of the app, including free. Developers receive 70% of the revenue, but don't have to handle hosting, credit card processing, and so on. If the app is free, neither the developer nor the user pay anything.
4. The version of the SDK which is available now is a pre-release version. The final version will be available in late June, alongside an OS update to iPhone itself. Until that time, the SDK is under NDA and the apps cannot be distributed to the general public.
5. All of the above applies to the iPod Touch as well.
iPhone OS Layers
According to the introduction video, the iPhone OS consists of four primary layers:
A. Core OS: Essentially, the kernel environment and low-level APIs. The kernel is the same as the one from the "desktop" Mac OS X. There's also the library system, BSD networking, sockets, security, power management, KeyChain, certificates, the file system, and Bonjour.
B. Core Services: These are the general APIs that don't necessarily apply to user interface interaction. Collections, AddressBook, higher-level networking, higher-level file access, Core Location, Net Services, threading, preferences, URL utilities, and SQLite.
C. Media: Video, Audio and Images. Core Audio, OpenAL, audio playback/mixing/recording, bitmap and PDF support, Quartz 2D, Core Animation, and OpenGL ES. A lot of this is, of course, is hardware accelerated.
D. Cocoa Touch: High-level Multi-Touch event support, stock Multi-Touch controls, accelerometer support, view hierarchies, localization, alerts, WebView, People Picker, Image Picker and Camera.
Demos
Even I though I already knew about what the Mac OS X APIs provide, I was truly amazed at the demos. I think I had underestimated the power of the hardware until now. Spore was a big surprise entry, and it seems like it was practically designed for iPhone.
I was even excited about the Salesforce.com app — not because it's something I would use, but I was so thrilled to see a third-party developer who doesn't have any particular affiliation with the Mac actually "get" the idea. In two weeks, no less.
The AppStore
I strongly suspect that many independent Mac developers never quite get off the ground because of the last mile: handling payments, registrations, license keys, and so on. The solutions are unclear and even the good ones are outside of the normal area of expertise of a Mac developer.
The iPhone AppStore is a brilliant solution to this. This gives both Apple and third party developers a reason to promote the store and the platform in general.
The better and more plentiful the apps are, the more valuable the platform is and potentially more devices that can be sold. The more Apple promotes the store and the apps in it, the more the developers can enjoy the revenue and recognition of their efforts.
And most importantly, a plan for actually generating sales makes it easier to justify the initial time investment of writing an app.
Some Less Obvious Points
It's easy to forget that all of this applies to iPod touch as well. This actually may be the sleeper feature because the iPod touch is only $299 and requires no contract.
Millions of iPods have been sold at the $250-$299 price point, and the basis for the future of this product line runs all of the same software as iPhone. Not only that, but all of the enterprise features will work on iPod touch as well. That in itself is big news.
So what we have is the newest iteration of the most successful consumer product in recent history now running Mac OS X and Cocoa, with enterprise-level features including Exchange integration. It fits in a pocket and knows your physical location.
Even better? You need a Mac to get in on the SDK. The sales that directly result from this will probably not make a significant impact, but it does have an impact on mindshare.
We're also seeing a glimpse of something else. With iPhone, developers will be coming in contact with Objective-C and Cocoa for the first time, starting to understand what the thinking is behind them. You can certainly see it in the eyes of the folks who put together the demos.
iPhone SDK
Posted Mar 9, 2008 — 34 comments below
Posted Mar 9, 2008 — 34 comments below
frozendevil — Mar 09, 08 5597
Damien — Mar 09, 08 5598
John Muir — Mar 09, 08 5599
Oddly enough, after installing the SDK on my Intel Mac mini, I can assure you that the iPhone emulator at least is a Universal binary and does run on my own 12" PowerBook … although to do anything useful you need to install the whole SDK. I haven't on the PPC laptop yet due to lack of space. Not promising it will all be just fine though, just that there are Universal binaries in there instead of obviously Intel only stuff.
As for the big picture: Cocoa is Apple's crown jewels and the strategic significance of the SDK and AppStore can scarcely be overestimated. This is absolutely huge. Expect it to be looked back on as a crucial turning point for not only Apple and phones, but all high tech. Seriously, I anticipate great things!
Matthieu Cormier — Mar 09, 08 5600
You're right on the money with the iPod touch. The iPod touch also opens the market to countries where the iPhone is still not available (like Canada). If I wasn't knee deep in programming projects I'd rush out and pick up a touch.
M@
Pierce Wetter — Mar 09, 08 5601
Weird limitations:
Sync Manager seems to be removed. How am I supposed to synchronize my to-dos with my to-do list program? It seems like the official solution is going to have to be to build a web server into my app, and if I see it on the network, sync over wifi, and it has to be manually initiated. Which seems kind of weird.
Ok, no background tasks. How about a periodical?
Is there any official way to push data to the phone?
Mitch Cohen — Mar 09, 08 5602
One question I have regarding the forced App Store requirement is how to handle limited (closed) beta testing. Will there be a way to distribute an app but only allow a small subset of users to view/download the app? I have a similar curiosity for iPhone apps which are complementary to a desktop app, that might be sold as a bundle. We might not learn more until release. Hopefully they'll consider these issues.
I'm also a bit confused why Apple isn't including the iPhone developer program within the Select developer program. I can see the $99 program for iPhone-only developers; a great low-cost means of entry. But why why not make that inclusive in the Mac developer program, or really, an overall Apple developer program? I'm not being cheap here, I'll spend the $99. I'm thinking that having a combined program would draw more developers to the Mac.
Scott Stevenson — Mar 09, 08 5603
The SDK is not code complete and is almost certainly not feature complete. File bugs for anything you think needs to be there. That's a big part of the reason for seeding an early release.
@Mitch Cohen: Will there be a way to distribute an app but only allow a small subset of users to view/download the app
That's a great question. I don't think there's been anything announced, so the workaround is probably to get them to use the simulator. This, unfortunately, means that they need enough technical expertise to pull that off.
Nicko — Mar 10, 08 5605
One important point that you failed to note is that the free SDK does NOT allow one to test one's application on a real iPhone, only to test it under the simulator. This makes many features, such as tilt sensors, location services and slow/unreliable EDGE connections difficult or impossible to test.
Florent Pillet — Mar 10, 08 5606
Two things about the $99 developer program: as Mitch put it, the iPhone Dev Center needs either a full-blown developer program in itself with DTS incidents, or a combined program with the standard Mac developer program. Also, as a non-US based developer, I'm not too happy about the US-only initial limitation for the developer program. I'm looking at combining my 10+ years experience developing mobile software with my even longer experience writing Mac software, but I have to wait for my US competitors to test and release their stuff first?
This said, and knowing very well the tools available to develop for other platforms, congrats to the teams working on this SDK for a fantastic toolset and particularly well done documentation! I find the new docset impressive.
mj — Mar 10, 08 5607
Chris — Mar 10, 08 5608
victor — Mar 10, 08 5609
PatrickQG — Mar 10, 08 5610
It would be nice, however, to be able to design things in IB, even if it created classes that you created new instances of in code.
Personally I'd love to see bindings and CoreData. Not sure how possible either of those will be given the constraints on CPU & memory, but I can hope!
Chris Gervais — Mar 10, 08 5612
1. When reviewing the media layer, a huge component of today's iPhone and iPod touch user experience, the word "QuickTime" was never mentioned. Couldn't you have succintly summed up most of that stuff by saying "QuickTime" or is Apple no longer saying "QuickTime?"
2. No mention at all of a .mac SDK for iPhone OS 2.0. Seems like this would be a great feature and allow some nice sharing of data between iPhone apps using Apple's cloud services. Perhaps it's a feature to be revealed later, but I've got a couple of iPhone apps on the drawing board where .mac support would be a key enabler of bridging data from the desktop to mobile device.
Michael Sherman — Mar 10, 08 5614
Wayne — Mar 10, 08 5615
First we were penalised for not being able or willing to fly to SF for WWDC last year in the form of late access to the significantly updated Leopard Beta that was distributed there, and now we have to suffer this.
Effectively, Apple are giving an artificial head start to any and all competitors I have in North America.
It's bad enough that I will never be able to develop a relationship with my users and that my software will be advertised and sold alongside that of my competitors, but it's far worse that they then get a head start on me.
After SF, I didn't renew my ADC subscription. I'm kinda glad I didn't or I'd have to be shelling out extra for this. At least I've saved myself $400 this year even after getting a signing key if / when they consider us non americans to be worthy.
Scott Stevenson — Mar 10, 08 5617
For that to work, Cocoa Touch would have to be distributed with new releases of Leopard. I don't think anything about that has been announced. You also probably wouldn't want all of Cocoa Touch, because that would include all sorts of widgets that have no relevance in a desktop environment.
@Chris Gervais: Couldn't you have succintly summed up most of that stuff by saying "QuickTime" or is Apple no longer saying "QuickTime?"
To answer without getting into NDA stuff, let's talk about Mac OS X in general. QuickTime was a catch-all media API for Classic Mac OS, but this isn't the case as much now. QTKit and QTCaptureKit are the designated video playback and capture frameworks, CoreAudio and OpenAL are the new audio APIs, CoreVideo does real-time effects, and there are quite a few imaging frameworks.
Andre — Mar 11, 08 5624
Damien — Mar 11, 08 5626
Do you have to pay 99$ once or each year ? :)
I can't find any informations about that.
Thanks
Ian — Mar 12, 08 5636
Why is the iPhone simulator called the ASPEN simulator?
A: It is a contraction of architectural simulator for parallel engines as described here: ieee article
Regards, Ian
Mr. Brown — Mar 12, 08 5637
Apple did also neglect bindings by not supporting them properly in NSCollectionView and in other new things. And now this. Why, oh, why?
cjr — Mar 12, 08 5638
britt — Mar 12, 08 5641
Ben — Mar 12, 08 5642
Anyone else had this problem and if so been able to get around it?
Scott Stevenson — Mar 12, 08 5643
What do you mean?
PatrickQG — Mar 12, 08 5645
My assumption (based on the fact that the "Platform" name in /Developer/Platforms/) is that the code name for the SDK release is Aspen, could even be the name they've been using internally for the iPhone SDK for a long time...
As to why Aspen? I saw "Boston" used to describe the iPhone in Ireland project, so maybe they just like city names...
david — Mar 16, 08 5653
1. When it comes to downloading the SDK is there a way to get Safari to pick up a partial download from where it was last interrupted? To say the least it is a big file, something that I would normally use wget to get.
2. Does the SDK and frame works make use of Objective C 2.0? I have a Mac now to provide me some latitude with respect to learning Objective C but need to know if it makes sense to do that with the most recent version of Objective C. I guess once I get the SDK this won't be an issue.
3. What is up with the BlueTooth stack. Without breaking NDA is there any sign that Apple will start to support some of the more common profiles that BlueTooth supports? There is a huge umber of potential apps that could be developed if this issue would be resolved.
I hope these questions from a iPhone novice aren't to much of a distraction. Thanks Guys
Scott Stevenson — Mar 16, 08 5656
You can see the list of download files in Window > Downloads. In most cases, you can click the orange button with a circular arrow next to the file to resume the download. I'm not sure it will work in this case because you have to actually log in to get to the file.
I think the best way to get answer to your other questions is to check out the SDK. :)
Nick Chadwick — Mar 18, 08 5664
I downloaded the SDK myself 10 days ago using Safari, and can confirm that resuming the download (as described above by Scott) does indeed work. I had to do this because I had just rushed out to by a Mac mini, and needed to restart to install system updates, so stopped the download and then continued after reboot.
Hope that helps!
Mishkin Berteig — Mar 23, 08 5685
Anyone know of a crack to the XCode system that will allow me to put my apps on an iPod Touch/iPhone to test them? Most of the things I plan to build are completely impossible to test on the simulator since they use either accelerometer or location based information.
david — Mar 24, 08 5686
Thanks for all the help. If anybody is interested what I did i made use of a local library in town. That solved the download problem right off the bat. Highly recommended by the way and it makes me wonder why I tried to get the SDK from home.
As to the other questions lets just say that I've been doing so much reading and video watching, the back side was getting a little sore ;) What I've seen doesn't look to bad from the standpoint of Objective C. It looks like the large Frameworks are the bigger learning curve.
I have a ways to go with the information absorption but do have to wonder if there are any indications of when IB will be delivered?
Christopher Su — May 23, 08 5900
Sujith Krishnan — Jul 17, 08 6165
Is it sure that iPhone SDK wont support background apps, because i want to create an app, which will start everyday 1am, download bla..bla..
I heard its possible, buut the code might be BUGGY !!!!! isnt it?
Nick — Feb 06, 09 6607
Is your experience that a 1.8 GHz Mac mini is up to the task?
Nick