5

我在 App Store 中有一个现有的应用程序,它与 iOS 7 和 8 配合得非常好。这是一个使用 Core Data 存储用户添加的信息的应用程序,以及用于同步的 iCloud(无键值存储)。

使用 Xcode 5.1.1,一切运行良好。我刚刚花了一些时间为我的用户发布了一个紧急时区修复程序,因此该修复程序与 iCloud 和 Core Data 无关。自从 Xcode 6.0.1 和 iOS 8 SDK 发布以来,我继续前进并开始使用它。

今天早上验证我的应用程序时,我收到以下错误:

Invalid Code Signing Entitlements. The entitlements in your app bundle signature do not match the ones that are contained in a provisioning profile. The bundle contains a key that is not included in the provisioning profile: 'com.apple.developer.icloud-container-environment' in Payload/AppName.app/AppName'.

在开发者门户中,我的 App ID 启用了 iCloud,但仅适用于 Xcode 5,因为我还不想使用 CloudKit:

在此处输入图像描述

在 Xcode 部分中,在 Xcode 6 中,我现在看到以下内容,其他人也一样:

在此处输入图像描述

使用我的权利文件夹。所以在我的例子中,它类似于 82828282.com.company.app,它位于 Capabilities 部分的 RED 中。

在此处输入图像描述

我不太明白我应该做些什么来让它工作。

问题

1) 我应该使用 CloudKit 吗?

2) 我必须在开发者门户的 App ID 中启用 CloudKit 吗?

3) 我应该在开发者门户中使用 iCloud 容器吗?

我当前的 iCloud 设置是使用权利:TeamID.identifier。

我已经通过从 Xcode 5.1.1 提交应用程序来解决这个问题,因为这是一个紧急修复,但我只是不明白如何使用 iOS 8 和 Xcode 6.0.1 进行未来开发,使用 iCloud 和我的应用程序中仍然非常启用核心数据。

我在 SO 中看到了一些类似的案例,比如这里(iCloud Core Data Not available after running in Xcode 6 / ios 8 SDK)和Using Core Data, iCloud and CloudKit for sync and backups and how it works together but I'm really not确定要做什么。

任何指导都将不胜感激。

4

2 回答 2

3

如果您想在 Xcode 6 将旧的 Ubiquity 容器格式(以 $(TeamIdentifierPrefix) 开头的格式)更新为 iCloud 容器后继续使用它,您必须:

  • 转到 Apple 会员中心的 Certificates, Identifiers & Profiles 页面,并在您的 App ID 的 iCloud 设置中设置“与 Xcode 5 兼容”——您似乎已经这样做了。

  • 确保您的权利文件中没有任何“com.apple.developer.icloud-services”键或“com.apple.developer.icloud-container-identifiers”键。

  • 您可能需要重新生成所有使用此 App ID 的配置文件。

于 2015-01-26T18:09:26.343 回答
1

我在 Xcode 7.3.1 上遇到了类似的问题,但仅涉及 iCloud,我的应用程序不支持 Core Data,在尝试了大部分在网络上发现的建议但没有任何运气之后,我通过开发者门户解决了:

证书身份配置文件 -> 标识符 -> iOS App IDs -> NameOfMyApp -> 编辑

并将单选按钮从"Compatible with Xcode 5"更改为"Include CloudKit support (requires Xcode 6)"。我的应用只使用 iCloud 键值存储。在此处输入图像描述

于 2016-07-30T10:33:51.500 回答