Chicago (IL) – In Apple’s iPhone OS 3.0 preview today, a new software developer kit (SDK) 2.0 was unveiled allowing developers to create iPhone OS 3.0-compatible applications. The release packs over 1,000 new APIs designed to help programmers create a new breed of feature-rich applications for the iPhone and iPod touch. Here we take a closer look at some key SDK 2.0 abilities, what they mean for developers and the applications they create, and how all of it impacts the end-user experience.
The iPhone OS 3.0 and SDK 2.0 both remain backwards compatible to run all of the over 25,000 applications written for the iPhone platform so far (in just 8 months). Older software re-compiled with SDK 2.0 shouldn’t require any changes by the developer, though the extensive new programming functionality introduced in SDK 2.0 will be hard to pass over — making new versions of existing apps almost surely more feature rich.
Once it arrives this summer, all of these new abilities will be exposed to work on all existing iPhone and iPod touch devices that are upgraded with the iPhone OS 3.0 firmware. However, some of the new hardware functionality introduced with iPhone 3G will not be possible in the first-gen devices.
Push Notifications: Apple’s answer to background execution
Push Notification (PN) is Apple’s way of avoiding background applications that, in their words, “eat battery life” while still providing a system to notify users of important events — even if the originating application is not currently running on the handset. While the ability is very exciting, its arrival has squashed hopes for background processes in one fell swoop.
Apple defended the move to PNs by citing tests showing an 80% drop in stand-by time (by leaving the IM program idle in the background on several mobile platforms), while the PN system only reduced it by 23%. Apple also noted that background processes chew up CPU time, slowing down programs in the foreground.
Apple’s PN workaround enables programmers to create, let’s say, instant messaging programs that don’t have to run all the time. This prevents them from wasting memory and CPU resources and draining battery, but still notifies users when a new instant message arrives. While Apple promised PN APIs in time for iPhone OS 2.0 release, the feature briefly appeared in early builds of the SDK only to be removed from later builds without an explanation being given.
Today, however, Apple officially unveiled that PN API is now part of the iPhone OS 3.0. On a technical side, Apple said there will be three types of notifications: 1) Badges which overlay over an application icon on the home screen (like unread message count which may appears in red over the icon of built-in Mail program), 2) Sound alerts and 3) Text alerts that visually appear just like text message (SMS) alerts.
While the supported application is running on the phone, it maintains connectivity via Apple’s servers. When the user exits the app, the server pings the phone with notifications the operating system can then display to the user or, through internal iPhone OS 3.0 support, provide the updated badges which serve only as visual cues the next time the home screen is accessed. The whole process is an automated interplay between the OS, Apple’s notification servers and cloud-based code designs which must accompany such applications.
Throughout the entire process of notifying, the actual iPhone application is not running at all (thereby not wasting system resources). The application will only launch if a user chooses to reach to a notification, to reply a text message delivered by the instant messaging program, for example. Apple stated that the PN system is “really scalable and ready to go,”stressing that notification servers are now optimized for 25 carrier networks in over 80 markets around the world where iPhone currently sells — meaning the company has taken care of all the different configurations and protocols. Quite nice.
In-app purchases: A new gold mine
The App Store is already sure big. With over 25,000 programs and over 800 million downloads — all in the brief eight months of its existence — the software bazaar has become the de facto poster child for a successful full digital software distribution model. But why not extend it further to needs within applications?
Some programs, especially games, are designed to allow users to purchase stuff online. For example, the newly released Fandango application for movie ticketing lets you order up to 10 tickets online via a secure online shopping system. Instead of spending time developing a dedicated e-commerce systems for use in every such application, programmers can now leverage the App Store infrastructure in iPhone OS 3.0 to enable in-app purchases without writing the entire purchasing ecosystem from scratch.
Apple said it will keep 30% of the revenue from in-app purchases (just like it does with App Store application purchases today), with the developer retaining 70% without additional fees.
To sell the feature, Apple let several developers, including Ngmoco and Electronic Arts, showcase it on-stage during the presentation earlier today. The two developers unveiled new pet and life simulator games for iPhone — respectively called TouchPets and Sims. The two games allow players to purchase in-game items for real money, using the new in-game application purchase mechanism that comes with the new SDK. Another gaming app mentioned called LiveFire allowed the in-game users to purchase a rocket-launcher for $0.99 in real money, for example.
If the millions of dollars spent on virtual goods in games like World of Warcraft are any indication, this feature could turn out to be a gold mine for clever developers who will rake in far more than the initial download sales fee. And especially for those who can create ongoing revenue streams by selling subscription-based content like e-Books, digital magazines, game level upgrades, etc. One caveat, however, free applications don’t get to use the new in-application purchases — meaning, if you download it for free, you’re guaranteed to never pay for something directly from within the app.