Dropbox != iCloud Document Storage
Monday, January 16, 2012 at 3:18PM While prepping for my appearance on iDeveloper Live, I started thinking about why more apps haven't adopted iCloud Document Storage. I mean, of the apps I use regularly, only Goodreader and Pocket God have iCloud support (and, for the life of me, I don't know why Pocket Cloud needs it).
One obvious reason is the API's complexity. It's not easy to implement. There are a lot of moving parts, and you have to get them all working together, or the entire system falls apart. But, I think there's also an issue of expectations. After all, I often hear developers say, "Why should I use iCloud, when I already have Dropbox support?"
Yes, iCloud is complex. Yes, there appear to be a few lingering bugs (though, far fewer than what most people think). Still, it's an important technology, and I feel it is well worth the time to work through its issues. After all, Dropbox is only at best a partial replacement for iCloud.
Don't get me wrong. I love Dropbox. It fills a very important role, letting me easily transfer documents to and from my iDevices. However, it's not a full-feature document syncing solution. You don't receive notifications when an application has been modified. It doesn't support tracking or resolving document conflicts. If you're going to be editing documents on multiple devices, iCloud is definitely the way to go.
And the reverse is also true. If you just want to transfer files to your app, Dropbox may be the best choice. While you could implement file transfers using iCloud, that requires building a desktop client for your app. With Dropbox, users just need a free Dropbox account and a browser, and they're good to go.
So, are you using iCloud storage in your apps? Have you given it a try? What successes and failures have you had? More importantly, if you haven't yet tried iCloud, what's holding you back?



Reader Comments (3)
Just finished a UIDocument based implementation of iCloud support in my app, Vegas Mate. VM is a trip planner / travel app and now with iCloud, a trip you create on one device is automatically synced to your others.
The biggest pain with the implementation was the lack of docs. Initially I went with a pure Core Data approach but it was so buggy, I moved to UIDocument and things there generally worked well.
Still, the APIs and implementation clearly are still early days. Lots of bugs filed.
What bugs did you run into with Core Data? And were you using raw Core Data or UIManagedDocument?
I've only found one issue that I can't find a good work around when using UIManagedDocument--and especially when using UIManagedDocument with multiple documents (rather than a library-style app). I'm not sure how important that bug is in real-world situations. It may be an artifact of testing. However, I wouldn't be surprised if there were other problems that I just haven't run across.
Apple's documentation for Core Data and iCloud is really thin. Or, rather, important tidbits are scattered across at least three different documents--and there was some contradictory information.
UIDocument seemed more stable to me--but it's considerably harder to implement, since you have to do most of the work yourself.
I do not think of iCloud and Dropbox as being comparative choices for persisting data across multiple devices, at least not when it comes to database data. Being able to achieve multi-device persistency with the performance of running the database locally on every device...that's a win. And while it may not be ready for large scale multi-user deployments yet, I believe that is Apple's intention. That's where the puck is heading.