When and why developers should use iCloud

There has been a lot of discussions over the past months about the quality of the iCloud service for syncing and storing data between multiple devices, a lot of these discussions seem to have come from a post about why developers should never use iCloud, while some of their points were valid I now want to tell you what I tell anyone trying to make these sort of decisions.

You don't always need to lock yourself in to doing something just one way, especially when services can run side by side without incident and without dependence.

I will admit, iCloud has both issues and limitations but it also has great strengths which other services cannot provide. The strongest of which is the absence of a login screen to access your data, there is nothing more damaging to apps than providing a login screen to the user prior to proving the app itself is worth it's time in gold to the user. Since you require an apple account to be logged in to be able to download any apps, it can be assumed you will most likely be logged in when using the app.

There are other advantages such as it being free to use and the API isn't entirely horrible and seems to handle the key value store and documents reasonably well even if the core data functionality needs a little work. The point is though that it is perfectly functional in some capacity. So how can you make the most of these strengths?

It is important to have your own data service, you want your product to be fully scalable and able to be rolled out on multiple platforms, that is a good thing, all developers should want this option. What you could do though is store a unique account key in the key value store on a users iCloud account as well.

What would this allow you to do? Well, it means your users could potentially log in once on an iOS device and then never log in again across all of their devices. While this mechanism only really works on iOS there is some value in it as more and more people have both an iPhone and iPad in their lives.

The other advantage is you can delegate certain data storing and syncing to be handled by iCloud to lower the stress and bandwidth usage on your own servers. This would have to be non-essential to non-iOS devices of course but leaves you some breathing room. Maybe you have certain settings and parameters which only apply to iOS and don't need to be stored on the same data system as your website.

iCloud isn't the knight in shinning armour we want it to be and most likely never will be but it can still be used to produce better products. Shunning it entirely just closes a door and avenue to improve your product.