Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I use CloudKit on Android or web-based app?

I've been coding an app, and using CloudKit would make my life a lot easier. However, this app needs a web-base app along side the iOS app. I was wondering if there was any way I could use CloudKit with Android or web-based apps.

While this might not directly possible with an API provided by Apple, another possibility would be to use OS X Server for CloudKit. Would that be possible too/comply with Apple's Terms of Service for CloudKit?

like image 611
Zoyt Avatar asked Jul 02 '14 20:07

Zoyt


People also ask

Should I use CloudKit or firebase?

Summary: Firebase can be immediately accessed without authentication but also provides the flexibility to define your own rules. CloudKit is probably more secure and can provide a seamless experience for your users too, but only if they are using iOS.

Is CloudKit a backend?

CloudKit it's Apple's Backend as a Service platform and it's specially designed for iOS apps. CloudKit was introduced in the year 2014 as an amazing solution to integrate iCloud in your applications with ease. This cloud solution has been introduced by Apple.

How much does CloudKit cost?

How much does it cost? The answer is: free. Apple allows using CloudKit for 10 GB of resource storage, 100 MB of data storage, and 2 GB of daily transfer, scaling with your user base up to to 1 petabyte of resources, 10 TB database, and 200 TB transfer.


1 Answers

Yes you can. Apple provides CloudKit JS, specifically designed for web services. I don't know much about Android, but I'm pretty sure it'll be not a hard challenge to run JavaScript.

Also CloudKit WebServices could be interesting for you.

EDIT advice and discussion

To give you an honest advice: Better use something "own". I currently work with a custom server on an AWS EC2 instance and am really happy.

You could, for example, write a really simple server using Node.js and connect a Mongo DB NoSQL database. CloudKit is actually not more than this.

This is really a simple task. I did this before and with some JavaScript experience and a few days Node exercises it is absolutely feasible; you'll write really nice servers very quickly.

In the end, when dealing with more customers, CloudKit will be more expensive, actually. And if you, why ever, must move to a different service, you will have trouble with CK, because you are not able to access the privately stored data.

Also, be sure that CKs concept fits your needs. I was in your situation a few months ago. As I read more about CloudKit and viewed some WWDC sessions, I more and more realised that it is not a BAAS as you would probably expect.

One example: You have no access control: private or public, thats it. There is a public database which everyone can access each resource in. And a private one for any user, which is inaccessible by others.

If you don't want to, or can't, do something on your own, you could simply use BAASBOX for self-hosted APIs or just any commercial BAAS.


EDIT II

To point that out again for anyone late in the game:

The private (per-user) databases are absolutely inaccessible for others – even you as the developer and operator can't access the, most probably encrypted, data to move to a different (maybe self-hosted) service.

You'd need to make an update and the app then needs to move the data to your new service on the users behalf – "device-ly".

These kind of processes are typically problematic because you'd need to run two services until all active users moved their data – which is REALLY hard to tell; your customer might be idle for some time and they'd be upset if their data is lost in void forever.

Ok – Cloudkit might continue until... Yeah, until then. So it might not be as problematic to do that kind of passive longterm-movement.

like image 56
Julian F. Weinert Avatar answered Oct 08 '22 20:10

Julian F. Weinert