【问题标题】:Can I use CloudKit on Android or web-based app?我可以在 Android 或基于 Web 的应用程序上使用 CloudKit 吗?
【发布时间】:2014-08-23 19:39:03
【问题描述】:

我一直在编写应用程序,使用 CloudKit 会让我的生活变得更轻松。然而,这个应用程序除了 iOS 应用程序之外还需要一个基于 Web 的应用程序。我想知道是否有任何方法可以将 CloudKit 与 Android 或基于 Web 的应用程序一起使用。

虽然这可能无法通过 Apple 提供的 API 直接实现,但另一种可能性是使用 OS X Server for CloudKit。这也可能/遵守 Apple 的 CloudKit 服务条款吗?

【问题讨论】:

    标签: android ios cloudkit


    【解决方案1】:

    是的,你可以。 Apple 提供CloudKit JS,专为网络服务而设计。我对 Android 了解不多,但我很确定运行 JavaScript 不会是一项艰巨的挑战。

    还有CloudKit WebServices 可能对你很感兴趣。

    编辑 建议和讨论

    给你一个诚实的建议:最好使用“自己”的东西。我目前在 AWS EC2 实例上使用自定义服务器,我真的很高兴。

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

    这真的是一个简单的任务。我之前做过这个,并且有一些 JavaScript 经验和几天的 Node 练习,这是绝对可行的;你会很快写出非常好的服务器。

    最终,当与更多客户打交道时,CloudKit 实际上会变得更加昂贵。如果你,为什么,必须转移到不同的服务,你会遇到 CK 的麻烦,因为你无法访问私人存储的数据。

    另外,请确保 CKs 概念符合您的需求。几个月前我也遇到过你的情况。当我阅读更多有关 CloudKit 并查看一些 WWDC 会议时,我越来越意识到它并不是您可能期望的 BAAS。

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

    如果您不想或不能自己做某事,您可以简单地将 BAASBOX 用于自托管 API 或任何商业 BAAS


    编辑二

    再次为游戏后期的任何人指出这一点:

    私有(每个用户)数据库对于其他人绝对无法访问 - 即使您作为开发人员和运营商也无法访问很可能已加密的数据以移动到其他人(可能是自己) -托管)服务。

    您需要进行更新,然后应用需要代表用户将数据移动到您的新服务 - “设备级”。

    这类流程通常会出现问题,因为您需要运行两项服务,直到所有活动用户都移动了他们的数据——这真的很难说;您的客户可能会闲置一段时间,如果他们的数据永远丢失,他们会感到不安。

    好的——Cloudkit 可能会一直持续到……是的,直到然后。因此,进行这种被动的长期运动可能不会有那么大的问题。

    【讨论】:

    • 由于 CloudKit 现在公开了 JSON API,编写原生 Android 库并不难。唯一的问题是身份验证,这必须通过 Webview 等来完成。 github.com/jaumecornado/DroidNubeKit
    • 哦,听到这个消息很难过……但我认为在 Android 中使用 Web 视图是可以的——不是吗?
    • 有一个公共数据库,每个人都可以访问每个资源。每个用户都有一个私有的,只有该用户可以访问其中的资源。您无法控制哪个用户可以访问哪个资源。我认为这对于大多数基于 API 的应用程序来说可能是必要的。
    • 自 2016 年以来 CloudKit 已经支持共享数据库。设备启动的数据迁移确实是一个问题,但好处仍然超过恕我直言,尤其是当您的预算很低或为零时。 Apple 现在还为 CloudKit 提供了初步的 Web 服务。 CK不会死
    • 好吧,我想没有人说 CK 会死……也许措辞不好,但“直到那时”在这里指的是一个非常(可能无限)遥远的未来,正如以下句子所暗示的那样;)这只是对利弊的讨论和考虑。仅仅意味着可能帮助人们决定哪个最适合他们的特定情况。但我同意,对于预算过低和零预算的微型项目来说,这是一项非常好的服务。嗯......改进总是可能的,但我有一段时间没有在这个平台上工作了。
    【解决方案2】:

    不幸的是,CloudKit 仅适用于 Apple 生态系统。但是,有类似的技术称为ParseFireBase,可以让您做同样的事情,但可以跨平台。但是,它们的成本要高得多,而且不是客户端服务。

    注意 - Parse 的托管服务将于 2017 年 1 月 28 日完全停用。

    【讨论】:

    • 好的。我猜不会。我想我更多的是询问 OS X 服务器部分。
    • 我不会将 Parse 与 CloudKit 进行比较,CloudKit 是当今最前沿的云技术,Parse 更关注商业模式,而不是满足开发者的需求
    • 三方服务的问题是他们一直在关闭、继续前进或被其他公司收购!我喜欢 Parse,但同样的事情发生了。被 Facebook 收购,然后被关闭。
    【解决方案3】:

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

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

    对于设置应用程序的容器并配置 CloudKit JS,请按照以下步骤操作:

    1. 创建应用的容器和架构。

      如果您是 CloudKit 新手,请从阅读 CloudKit Quick Start 开始。您将使用 Xcode 创建应用程序的容器并使用 CloudKit Dashboard 查看容器。然后创建一个使用 CloudKit 存储应用数据的 iOS 或 Mac 应用。

    2. 在 CloudKit 仪表板中,通过创建 API 令牌或服务器到服务器密钥来启用 Web 服务。

    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.CloudKitConfig 属性的详细信息,请参阅 CloudKit JS 数据类型。

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

    参考线:

    Cloud kit quick Start

    Accessing CloudKit Using an API Token

    CloudKit Web Services Reference

    Accessing CloudKit Using a Server-to-Server Key

    CloudKit Catalog: An Introduction to CloudKit (Cocoa and JavaScript)

    iCloud Design Guide

    参考页面:

    CloudKit JS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 2021-06-23
      • 1970-01-01
      相关资源
      最近更新 更多