Last week, Apple showcased the upcoming 3.0 version of the iPhone operating system, widely expected to be available around WWDC in the June timeframe. If one thing became clear from this presentation, it is that iPhone OS is the next big computing platform, at least as far as Apple is concerned. After first introducing the iPhone and its incredibly slick and intuitive user interface to the public in 2007, Apple then educated millions of people on the idea that their phone can indeed be an all-purpose mobile computing platform by intoducing the App Store in 2008. And now, Apple seems to focus the attention even more on developers. Sure, Apple did announce some pretty nice new end user features in 3.0 (of which the company promises over 100 in total when the final product ships), but the really impressive announcements were the additions to the Software Developers Kit, or SDK.
No less than 1,000 new APIs were introduced to programmers, letting them do even more advanced stuff with the iPhone and iPod touch then before. Think of using the dock-connector or bluetooth to communicate to dedicated accessories, or the direct iPhone-to-iPhone networking connectivity over Bluetooth that doesn’t need pairing or joining of a wireless network, or the widely disussed push notification services letting applications notify users even when the actual program is closed, or the voice-over-IP functionality that can easily be implemented in a game or app without much efforts, or the in-app purchasing features opening up the way for many new types of applications.
Surely, consumers will be spoiled, if not overwhelmed, with the flood of new applications (or renewed applications) in the second half of this year, pushing iPhone as a platform even further away of the curve.
In this article, I will briefly share with you some thoughts I have on some of the new features offered by the iPhone 3.0 software and the new SDK.
When Apple launched the App Store for the iPhone, it put a lot of restrictions in place. They have been widely covered for many months, and by many bloggers and journalists. Most of them are well known by developers and users, and perhaps a bit more surprising, most people accept these limitations as a fact of life.
Some limitations that have been widely publicized are the inability to run more than one program at a time (leading for example to the inability to listen to an Internet radio station while doing something else), and the lack of the long promised push notification services (which among others enable instant messaging applications to receive messages when the device is idle or running another program).
But that’s not what I want to talk about. This time, I want to address another major annoyance.
There are a lot of areas when a desktop apps benefits from having a mobile app to take your data with you. Think for example of the excellent password manager 1Password, which can sync its protected database of passwords to the 1Password iPhone app. Or what about a personal assets database containing your lists of DVDs and books? It can be very handy to have these available on the go in a companion app on the iPhone. And of course you may want to upload some Office or PDF documents to a document viewer app on the iPhone.
And then we come to this other thing that has been bugging me for some time: the complexity that is involved anytime I want to exchange data between a desktop app on my Mac, and some application on my iPhone.
One of the reasons for the iPhone to be such a well functioning and exceptionally usabale device lies in the fact that, completely in Apple fashion, both hardware and software are made by the same company. This way, the hardware engineers were completely aware of how the software would function, and the software engineers fully knew the ins and outs of the hardware platform, letting both achieve the maximum of what’s possible with the combination. This has worked very well in the past too: just have a look at the Mac to see how a complete package of tightly integrated hardware and software eleminates a lot of problems that occur in the generic PC field, where all software is supposed to work on all possible vendors, types, versions and variants of hardware components in countless possible combinations.
Next to the obvious usability advantages for end users, having a clear combined hardware/software platform is also a very nice thing for developers. Knowing exactly the device that your software will eventually run on gives a developer some of the same benefits: he or she can take maximum advantage of the platform, without taking the risk that something would not work, or work differently, on another type of device. You know the capabilities and limitations of the platform, and you do not have to guess what features might possible be there, or worse: what featurs might be missing and how to deal with such a situation.