Are you old enough to remember having to share files using a floppy drive? If not, believe me – it was a pain. Compare that to today:
- Start a document on your Mac and then proofread recent changes on your iPhone while at the car wash.
- Make a few updates to your Keynote presentation on the airplane via iPad and know it will be waiting for you on your laptop when you land.
- Keep all of your devices in sync with your latest data, photos, and music. Automatically. Wirelessly.
These are some of the promises of iCloud, Apple’s Internet-based data service that was launched in October. iCloud stores your music, photos, documents, and more, wirelessly pushing them out to all of your devices. Apple is offering the service for free to all iPhone, iPad, iPod touch, and Mac users.
As iOS users, these features are definitely exciting. But as developers, we’re even more interested in how we can use iCloud to build better apps for our customers.
When building apps that support iCloud, there are two major types of access to consider: document storage and the “key-value store”.
Document storage is the technique used by Apple’s popular iWork suite of productivity applications to sync data. This system allows users to create and edit their documents across multiple devices…picking up where they left off on whatever device happens to be nearby. The user’s documents are just there – ready to go. We can build this level of seamless integration into apps using the same tools that are used in iWork.
Does your application need to share data between a user’s iPad and iPhone? Before iCloud, this would have meant building a custom Web service to keep the data in sync. With document storage, this can all be built in, no special Web service required. In many cases, the user doesn’t even need to perform any setup tasks to get connected.
Imagine a photo editing application – a user takes a photo on their iPhone and uses a custom app to crop out unwanted background scenery. If the app is iCloud-enabled, the user could then pick up their iPad to complete the editing work – all their changes automatically synced to that device, wirelessly.
Key Value Store is useful for settings and other smaller pieces of data. We can use the key-value store to ensure that a user only has to enter preferences once and can have them applied across all of their devices. Especially on touchscreen hardware, the less user input you require from the user, the better.
With multi-device synchronization comes new engineering and user experience challenges.
What happens if the same document is modified on two devices at the same time?
How about when one device is offline?
Deleting a user’s work is never an acceptable solution…but forcing them to do manual conflict resolution can be complicated and confusing. The right answer depends on the type of application data. Ideally, we can merge the changes on behalf of the user by making the correct assumptions and verifying these with user testing.
Pervasive iCloud integration is the future of all iOS apps and Apple will undoubtedly expand its capabilities with future iOS releases.
Are you interested in learning more about adding iCloud support to your iOS apps? Got a question? Leave a comment or give us a call…let’s talk about it.