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

35

我一直在编写一个应用程序,使用CloudKit可以使我的生活变得更加容易。但是,这个应用程序需要与iOS应用程序一起使用的基于Web的应用程序。我想知道是否有任何方法可以在Android或基于Web的应用程序中使用CloudKit。

虽然这可能不是直接通过由Apple提供的API实现的,但另一个可能性是使用OS X Server来处理CloudKit。这也可能与CloudKit的苹果服务条款相符吗?

3个回答

37

是的,您可以。苹果提供了专门为Web服务设计的CloudKit JS。我不太了解Android,但我相信运行JavaScript不会是一项难事。

此外,CloudKit WebServices对您可能也很有用。

编辑 建议和讨论

给你一个诚实的建议:最好使用自己的服务。我目前在AWS EC2实例上使用自定义服务器,非常满意。

例如,您可以使用Node.js编写一个非常简单的服务器,并连接Mongo DB NoSQL数据库。实际上,CloudKit就是这么简单。

这其实是一个简单的任务。以前我做过这个,并且有一些JavaScript经验和几天的Node练习,完全可行;您将非常快速地编写出优秀的服务器。

最后,当处理更多客户时,CloudKit实际上会更加昂贵。如果您为任何原因必须转移到另一个服务,则将遇到问题,因为您无法访问私有存储的数据。

此外,请确保CK的概念符合您的需求。几个月前我曾处于您的情况。随着我阅读有关CloudKit的更多信息并查看一些WWDC会话,我越来越意识到它不是您可能期望的BAAS。

举个例子:您没有访问控制:公共或私有,就这样。有一个公共数据库,每个人都可以访问其中的每个资源。还有一个私人数据库,每个用户都可以访问,但其他人无法访问。

如果你不想或不能自己完成某事,你可以简单地使用BAASBOX作为自托管API或任何商业BAAS。


编辑II

再次指出,对于游戏中的任何人,私有(每个用户)数据库绝对无法访问 - 即使您作为开发者和运营商也无法访问,最可能是加密的数据以转移到不同的(可能是自托管的)服务。

您需要进行更新,然后应用程序需要代表用户将数据移动到新服务中 - “设备式”。这些类型的过程通常存在问题,因为您需要运行两个服务,直到所有活动用户移动其数据 - 这很难确定;如果他们的数据永远消失在虚空中,您的客户可能会闲置一段时间并感到沮丧。

好了 - Cloudkit可能会继续...是的,直到那时。因此,进行这种被动长期移动可能不会那么麻烦。


1
由于CloudKit现在公开了JSON API,编写本地Android库并不困难。唯一的问题是身份验证,必须通过Webview或类似方式完成。 https://github.com/jaumecornado/DroidNubeKit - Legoless
1
哦,听到这个消息很遗憾...但我认为在Android中利用Web视图来实现这个功能是可以的,不是吗? - Julian F. Weinert
你的意思是“没有真正的访问控制;只有私有或公共的,是这样吗?”? - János
1
有一个公共数据库,每个人都可以访问其中的每个资源。还有一个私人数据库为每个用户提供服务,只有该用户才能访问其中的资源。您无法控制哪个用户可以访问哪个资源。我认为这对于大多数基于API的应用程序来说是必要的。 - Julian F. Weinert
2
自2016年起,CloudKit已经支持共享数据库。设备发起的数据迁移确实是一个问题,但在我看来,好处仍然超过了这个问题,特别是当你的预算很低或为零时。现在,苹果还提供了一个初步的CloudKit Web服务。CK不会消失。 - strongwillow
1
好吧,我认为没有人说 CK 会死亡...也许措辞不当,“直到那时”在这里指的是一个非常(可能是无限)遥远的未来,正如随后的句子所暗示的;)它只是一个讨论和权衡利弊的过程。仅仅是为了帮助人们决定哪种对于他们的特定情况最好。但是我同意,对于太低预算、零预算和微型项目来说,这是一个非常好的服务。而且...总是可以进行改进,但是我已经有一段时间没有在这个平台上工作了。 - Julian F. Weinert

5
使用 CloudKit JS 构建网页界面,让用户可以访问与在 iOS 或 macOS 上运行的 CloudKit 应用程序相同的公共和私有数据库。

您必须拥有现有的 CloudKit 应用程序并启用网络服务才能使用 CloudKit JS。

按以下步骤设置应用程序容器并配置 CloudKit JS:
  1. 创建您的应用程序容器和模式。

    如果您是初次接触 CloudKit,请先阅读 CloudKit 快速入门。您将使用 Xcode 创建应用程序容器,并使用 CloudKit Dashboard 查看容器。然后创建一个使用 CloudKit 存储应用程序数据的 iOS 或 Mac 应用程序。

  2. 在 CloudKit Dashboard 中创建 API 令牌或服务器到服务器密钥以启用网络服务。

  3. 将 CloudKit JS 嵌入您的网页中。

    使用脚本标签将 CloudKit JS 嵌入您的网页,并链接到 Apple 托管版本的 CloudKit JS:https://cdn.apple-cloudkit.com/ck/2/cloudkit.js

    <script src="https://cdn.apple-cloudkit.com/ck/2/cloudkit.js">

CloudKit JS 版本号在 URL 中。例如,2 指定 CloudKit JS 2.0。

  1. 启用 JavaScript 严格模式。

    要为整个脚本启用严格模式,请在任何其他语句之前放置 "use strict"。

    "use strict";

  2. 配置 CloudKit JS。

    使用 CloudKit.configure 方法向 CloudKit JS 提供有关您的应用程序容器的信息。还可以指定使用开发或生产环境。请参考 CloudKit 的示例,并查看 CloudKit JS 数据类型以了解可以设置的 CloudKit.CloudKitConfig 属性的详细信息。

现在您可以在 JavaScript 代码中使用 CloudKit.getDefaultContainer 方法获取应用程序容器(CloudKit.Container)及其数据库对象(CloudKit.Database)。
参考链接:

CloudKit 快速入门

使用 API 令牌访问 CloudKit

CloudKit Web Services 参考资料

使用服务器到服务器密钥访问CloudKit

CloudKit 目录:关于 CloudKit (Cocoa 和 JavaScript) 的介绍

iCloud 设计指南

参考页面:

CloudKit JS


4
很遗憾,CloudKit只适用于苹果生态系统。但是,有类似的技术叫做ParseFireBase,它们允许您做同样的事情,但可以跨平台。然而,它们的成本要高得多,并且不是客户端服务。
注意 - Parse的托管服务将在2017年1月28日完全停用。

好的。我猜不行。我猜我更多地是在询问关于OS X服务器部分的事情。 - Zoyt
我不会将Parse与CloudKit进行比较,CloudKit是当今尖端的云技术,而Parse更专注于商业模式,而非满足开发者的需求。 - János
2
第三方服务的问题在于它们总是不断关闭、迁移或被其他公司收购!我喜欢Parse,但同样的事情发生了。被Facebook收购后就被关闭了。 - Maziyar
这就是第三方服务的问题。Parse破产了,留下许多开发者和公司苦苦挣扎以迁移到新的东西,重写他们的代码,而并非每个人都能够完成这种迁移。Realm也是另一个例子,被MongoDB收购,有不同的价格计划,并需要重写整个应用程序以按照他们的方式使用它,我个人失去了很多工作,并不得不关闭许多依赖于Realm的应用程序。CloudKit至少会在苹果业务存在期间保持稳定。对于Android或Web来说,没有类似的东西。 - zeeshan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接