【问题标题】:Use production CloudKit during development?在开发期间使用生产 CloudKit?
【发布时间】:2015-07-22 20:01:05
【问题描述】:

我的 iOS 和 Mac 应用程序已发布到 App Store,我的所有用户(包括我自己)都在使用 CloudKit 生产数据库。我的问题是,有什么方法可以针对我的开发构建的生产环境?似乎没有办法针对 Mac App Store 之外的生产环境,而对于 iOS,只有 Ad Hoc 分发可以针对生产环境。

【问题讨论】:

标签: ios macos cloudkit


【解决方案1】:

将以下条目添加到您的 entitlements 文件并执行干净的构建。

这允许您在 Xcode 中使用 CloudKit 在生产模式下运行您的应用程序。

要添加的条目:com.apple.developer.icloud-container-environment with 值:Production注意:不适用于模拟器

【讨论】:

  • 工作得很好,但这仍然从生产环境和开发环境中获取数据。为什么?:) 不应该只来自生产?
  • 复制和粘贴:com.apple.developer.icloud-container-environment
  • 如果我在提交到 AppStore 时忘记删除它会改变什么吗?
  • 它毫无问题地通过了 App Store Review。
  • 这在 Xcode 9 中仍然有效,谢谢@RawMean,这拯救了我的一天!对于那些发现难以获得权利文件的人,它位于项目文件夹中。双击它会在 Xcode 中打开它。
【解决方案2】:

除了 com.apple.developer.icloud-container-environment。我发现生产云一开始就不起作用。我检查了仪表板中的日志,可以看到错误。只有当我将开发设置部署到生产环境时,它才起作用。看起来开发版会自动创建新设置,但生产版不会。也许我应该通过应用程序以编程方式进行更多设置,但我希望这些信息对您有所帮助。

【讨论】:

    【解决方案3】:

    我不确定将“com.apple.developer.icloud-container-environment entitlement”设置为“Production”是否适用于从 Xcode 运行的设备 - 它不适用于模拟器。

    但您可以让自己成为“内部审阅者”并使用 TestFlight 运行新版本。 TestFlight 使用生产环境。

    【讨论】:

    • 已修订 - 在权利文件中将“com.apple.developer.icloud-container-environment”设置为“生产”,然后在设备(而非模拟器)上从 Xcode 运行将我送入生产.
    • 当我为 OS X 应用程序执行此操作并从 XCode7 运行应用程序时,该应用程序不会以 Terminated due to code signing error 开头关于这如何适用于 OS X 应用程序的任何想法?
    • Mac 上的 bug,真可惜。请向 Apple 提出一个错误,以便他们知道我不是唯一一个抱怨的人。
    • @berbie 您需要 Xcode 8 和 macOS Sierra 才能使用 cloud-container-environment 权利而不会出现代码签名错误
    • 2019:显然它现在也适用于 Xcode 11 的模拟器
    【解决方案4】:

    来自 iCloud 设计指南https://developer.apple.com/library/mac/documentation/General/Conceptual/iCloudDesignGuide/DesigningforCloudKit/DesigningforCloudKit.html#//apple_ref/doc/uid/TP40012094-CH9-SW1

    在开发过程中,Xcode 会自动将您的应用指向开发环境。在发布您的应用程序之前,请使用分发工作流程配置您的应用程序。在此工作流程中,Xcode 允许您选择是要针对开发环境还是生产环境,并使用您选择的值将 com.apple.developer.icloud-container-environment 权利添加到您的应用程序。在发货之前,请务必为生产环境配置您的应用程序。以开发环境为目标的应用将被 App Store 拒绝。

    根据您的评论,这里有一些额外的想法: 根据 Apple 指南,只要您仍在为您的应用程序开发最佳数据模式并允许更快的开发,您就应该使用开发环境。然后,Apple 建议先部署到生产环境并对其进行测试,然后再提供给客户。所以我认为答案是这取决于你在产品开发周期中的位置。如果您处于早期阶段,请使用开发环境。如果您在该领域有客户,那么只要满足我的需求,我就会使用生产环境进行生产。如果我正在开发需要更改架构的新功能,您应该只在开发环境中开发这些功能,直到您确信将它们部署到生产环境不会破坏现有用户的任何内容并让他们顺利过渡。希望对您有所帮助。

    【讨论】:

    • 这来自文档,几乎是我在原始问题中提出的问题。我想知道的是跨 Mac 和 iOS 为 CloudKit 开发的开发人员的常见做法是什么,团队是否总是使用 CloudKit 开发环境,不像他们的所有用户?
    • 在我的回答中添加了信息。
    • 感谢您的回复,但这不是很方便。就我而言,方案已经完成,我只想能够将生产环境也用于我的所有开发版本,所以假设我设置了一个新设备并从 App Store 下载我的应用程序,它会看到相同的数据。就目前而言,作为开发人员,如果我想在我的应用程序的日常使用中运行开发构建,我必须始终运行开发构建并使用与其他用户不同的 CloudKit 环境。没什么大不了的,就是不方便。
    • 谢谢,这清楚了何时应该使用开发。但是,这些问题询问是否可以将生产 CK 环境用于在 App Store 之外作为测试版分发的 Mac 应用程序。根据我的经验,这是不可能的。最好能得到确认。
    • 问题在于 TestFlight 不支持 OS X 应用程序 - 因此,当您希望在 TestFlight 上针对处于 Beta 版的 iOS 应用程序进行测试时,您需要处于调试模式的 OS X 应用程序能够也可以连接到生产。现在这是一团糟,因为我什至无法为“生产”构建 Adhoc Mac 应用程序,因为 Adhoc 副本本质上是在 Mac 上的开发构建(没有 Adhoc 之类的东西)。那你怎么测试!?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 2013-12-14
    • 2015-01-03
    相关资源
    最近更新 更多