Pixel Envy

Written by Nick Heer.

iCloud Sync Outside of the App Store

Kevin Hayes of AgileBits:

At the last WWDC, Apple announced some changes to CloudKit, the technology that enables an app to sync with iCloud. As many of you know, it was previously impossible for non-Mac App Store apps to sync with iCloud. The changes that Apple made to CloudKit have opened up some really exciting possibilities, and today, we’re happy to announce that we have been able to implement iCloud sync in the AgileBits Store version of 1Password.

That’s pretty open for an Apple framework. What’s the catch?

Dave DeLong of Apple clarifies:

The policy is that you can use the WS [web services] as long as you have a comparable app in the stores.

So not entirely open, but arguably open enough. This doesn’t appear to be platform-dependent; that is, you could conceivably have an iOS app available and use CloudKit web services to sync to a desktop app not available in the Mac App Store. But one could not use CloudKit for syncing with, for example, a Mac-only app that doesn’t have an App Store version.

AgileBits says they’re going to ship a developer-friendly implementation, and it appears to be quite clever. Hayes again:

In order to talk to Apple’s servers, we needed a mediator. Adam Wulf and I created a class that takes native CloudKit API calls, translates them to web service API calls, and translates the responses back to native Cocoa code. The 1Password sync code is now completely ignorant as to whether it’s connecting to native CloudKit or CloudKit web services. This means that 1Password can find your data in iCloud, whether you’re using the Mac App Store version or the AgileBits Store version.

I know a lot of developers who are going to be pleased with this, especially considering the current state of the Mac App Store.