So we’ve previously observed with some amusement the insurmountable opportunities associated with Core Data iCloud synchronization, and noted some valiant efforts to redress the situation that unfortunately seem to have not set the world on fire; and, well, it seems that Apple’s pretty much given up on that. You may have noticed that the “What’s New in Core Data” WWDC 2014 was a little … thin, yes? Like the iCloud news segment was one slide,
- Transitioning to new infrastructure
- Reliability improvements
- Performance enhancements
- Transparent to developers
Hmmm. When the year’s news can be comprehensively enumerated as “sucks less”, that’s not the best investment signal, is it now.
But wait! We have a new hotness in the data sync world, or at least the Apple fiefdoms therein, as posted at iCloud For Developers:
Leverage the full power of iCloud and build apps with the new CloudKit framework. Now you can easily and securely store and efficiently retrieve your app data like structured data in a database or assets right from iCloud. CloudKit also enables your users to anonymously sign in to your apps with their iCloud Apple IDs without sharing their personal information.
With CloudKit, you can focus on your client-side app development and let iCloud eliminate the need to write server-side application logic. CloudKit provides you with Authentication, private and public database, structured and asset storage services — all for free with very high limits.
What’s New in Core Data
iCloud Design Guide (Pre-release)
CloudKit Framework Reference (Pre-release)
And although they list ‘What’s New in Core Data’ there, we’d like to bestow our 2014 WWDC Unintentional Deadpan Humour Award to Melissa Turner for her commentary on that session’s single CloudKit slide:
… I don’t know what either of those means. You should probably go watch the video of their session. Somebody gave me these slides. And asked me please to talk to you guys about it.
Why, she reminds us of our own style of following orders under protest! And just in case you missed that subtle hint, the only related session mentioned at the end was “Introducing CloudKit”. So, y’know, it’s not like the signposts here are anything other than completely obvious.
The general industry reaction is represented nicely here,
What does Apple’s CloudKit mean for mBaaS
Architecting an application around CloudKit locks your data into the Apple ecosystem. This means no access to this data for your Android application that half your users use. No access for your web application, no access for your web app, and no access to the data for your analytics engine to crunch the numbers.
Apple has yet to release any details of a REST API or export mechanism for this data. While the appeal when writing a simple application might be to use the out-of-the-box cloud APIs made available by Apple, in the longer term will prove very limiting. When extending this application to other platforms mobile or otherwise, there’s no way to utilise the same database elsewhere.
Apple of course has an agenda here – they’re trying to encourage developers, and thus in turn users, into their closed ecosystem – and a fantastic ecosystem it is. Unfortunately, that’s not the reality of the market. Users access applications across disparate platforms, made by disparate vendors. That should make CloudKit a non-runner for most applications.
Sounds about right. But for those with more modest initial goals, it’s pretty cool yes? Some commentaries worth reading:
Notes on CloudKit
But I still bet that lots of apps will benefit from this. Somewhere people are thinking about their existing apps and how they’d benefit — and people are planning new apps that they wouldn’t have otherwise been willing to try.
I think this is going to be a huge deal. I think it’s the first time Apple has really nailed a web service for developers. And I tip my hat to the team (or teams) behind all this. Good job, folks.
Did CloudKit Sherlock Ensembles?
First, let me say, I think CloudKit is awesome. It probably should have been iCloud 1.0 three years ago. Apple have done a great job, and I fully expect this to succeed. It’s particularly useful for apps that not only need cloud storage, but also have social aspects.
CloudKit is basically Apple’s take on schema-less cloud storage. Think Parse.com or Azure Mobile Services, and you’ve pretty well grasp CloudKit. You can store data records in the cloud — not just files — and don’t have to write any networking code. You can insert records, form relationships, and perform search queries, much like a cloud variant of Core Data (though not as powerful).
As good as it seems to be, there are limitations. CloudKit is not cross platform, so you can forget Android, and there is no web access to the data. But there should be plenty of smaller companies happy just to ‘win’ the Apple market, so I think it will get adopted.
Certainly makes sense to us to ship an economical iOS-only minimum viable product and rearchitect for cross-platform once it’s clear the investment is merited, so even in the current state CloudKit looks like a pretty big win. And we think it’s a fairly good bet that API and/or export mechanisms are on the roadmap too; it’s rather stretching credulity to think Apple believes they can wall their garden quite that high and still expect developers to enthusiastically embrace the technology. Check back after WWDC 2015, and we’ll see how well placed that confidence turned out to be!
CloudKit: The raywenderlich.com Podcast Episode 9
Choosing CloudKit brings up the point of data security, at least the user perception of such, that might be not insignificant depending on your intended app:
They will not need to setup another account with yet another set of credentials to manage. More importantly, their data will be stored with Apple, a vendor they have already choosen to trust. It will be stored in siloed, private data stores that not even the developer can access. That cannot be said for apps using Azure, Parse or other backend services.
Web Services, Dependencies, and CloudKit
CloudKit: The fastest route to implementing the auto-synchronizing app you’ve been working on? with Get up and Running with iOS 8’s CloudKit
Beginning CloudKit Tutorial
About iCloud changes in 1Password 5
“…apparently it’s also the API that Apple has always wanted for itself.”
Open Source iOS Library That Simplifies Working With CloudKit
IOS8 Cloudkit Tutorial – Part 1
evermeer / EVCloudKitDao: “Simplified access to Apple’s CloudKit.”
How to Work With CloudKit: Yalantis / CloudKit-Demo.Objective-C and Swift
Working with CloudKit in iOS 8
CloudKit: What is it good for?
Seam: “Seamless CloudKit Sync with Core Data”
CloudKit: Structured Storage for Mobile Applications
ILSCloudKitManager: “is wrapper for managing apple’s CloudKit operations like create, update, fetch and delete records.”
CloudKitCodable: “An encoder and decoder for CKRecord”
The Case for CloudKit