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.
This complexity is due to a number of Apple’s design decisions. For one, there is no disk access to the iPhone, so a desktop app can not simply browser in the phone’s file structure to add or update some files. But even if there was disk access, Apple would possibly limit the level of files we could actually alter on the phone, to prevent it from being messed up. Apps would likely retain their “sandbox”, so that it would be impossible to change their contents.
Currently, the only way for an iPhone app and a desktop app to talk to each other is via Wi-Fi. But this has some serious limitations. First, there should be a wireless network available, which is not always the case, especially in corporate situations. Second, the desktop computer and the iPhone should be on the same network, for the handshake to work easily. Third, the app should be actually running on the phone in order to communicate with the desktop. And fourth, it does not offer the user a streamlined interface to interact with the phone from their computer.
What about extending the iPhone SDK and modifying iTunes on the desktop, to allow desktop apps to exchange data with the phone via iTunes itself? Developers could then directly speak to the phone without getting the user involved. Another big advantage here of course would be that the program that is collecting the data on the phone is not required to be running.
Think about the examples I mentioned above. All of your passwords, personal library documents and files are copied to the iPhone without the need for any interaction on the phone itself. And when these programs automate this process, there isn’t even the need for any user intervention on the desktop either. All you current data is always synced to the phone.
Of couse, there are some possible design issues that need to be taken into account with this approach.
Currently, an app cannot receive data from anything other than itself (and the Wi-Fi connections it sets up by itself). This increases security, as no unwanted parties can alter the app. If Apple wants to maintain this security measure (or restriction, depending on your point of view), there needs to be some form of authentication in place between the the iPhone app and the desktop app that wants to talk to it. Apple could issue secure IDs for this within the SDK deployment program. And, depending on Apple’s mood, they might even loosen up things a bit, so that different desktop apps could talk to the same iPhone app (think of an app that aggregates different forms of data from different programs on your computer).
And there’s quite possibily another thing that might heaten up the discussion. For example what if Microsoft decides to incorporate my trough-iTunes communication funcationality in its Office applications to talk directly to a viewer app on the iPhone. This quite well destroys the open market for Office document viewers.
This can be solved by specifying various document types that a desktop app can parse to iTunes for communication with an iPhone app, and then let the user decide what iPhone app should be used. Compare this to the way an operating system always opens a type of file using a default program, but allows the user to select a different program to open the file if he or she wants to. Of course, for a lot of programs this makes little sense (like the 1Password example I gave above: the desktop and iPhone apps are directly linked to each other), but for many types of files and data it does. This might even create a blossoming market of new iPhone apps.
Of course, in typical Apple fashion the user interaction dialogs that a program displays when syncing or exporting data to the iPhone should be included in the Human Interface Guidelines, so that they become easily recognizable by users, and can be operated in a streamlined way. No more IP-addresses to go to with your browser to upload some documents to your iPhone app, and no more inconsistency between apps when doing so.
Some might argue that in this time and age, one should focus on over-the-air solutions to these kinds of data exchange problems. Some phones, like the Android-based ones, even completely lack any syncing with a computer via a cable. However, please remember that we are talking specifically about the interaction with desktop apps here. In general, when you want a desktop app to move something to your phone, you are near this desktop machine. It’s not something that needs to be pushed to the phone at any given moment. Furthermore, the iPhone needs to be docked to the computer anyway if you want iTunes to upload new audio, movie or photo files. And there might even be a win in it for Apple as well, as it places iTunes at yet another strategical position within the iPhone/iTunes eco-system, the added visibility benefiting its other, money-generating acitivites in the iTunes Store.
Sure Apple, give us the Push Notification Services we have been promised to get last September. But when that’s done, please have a look at how to move data between the phone and the computer. It can be greatly improved.