该应用程序缺少必需的权利 com.apple.developer.icloud-services'

The application is missing required entitlement com.apple.developer.icloud-services'

我在我的应用程序中使用 public iCloud 数据库,它运行良好并且已在商店上架。

将我的应用程序更新到新版本时(iOS9 上的 Xcode 7)我遇到了崩溃:

CKContainer * container = [CKContainer containerWithIdentifier:@"iCloud.com.identifier"];

*** Terminating app due to uncaught exception 'CKException', reason: 'The application is missing required entitlement com.apple.developer.icloud-services'

这只会在更新后首次启动应用程序时发生,并且只会在 iOS9 上发生。在首次(更新)启动后,应用程序启动并且 iCloud 会按预期工作。

我可以通过下载该应用程序的当前商店版本,然后 运行 从 Xcode 7.

下载更新的应用程序来始终如一地重现崩溃

如果我使用 iOS8 执行相同的步骤(下载生产应用程序并更新),我不会遇到同样的崩溃。

我猜这是一个 iOS9 或 Xcode 7 错误。有任何想法吗?

编辑: 这实际上发生在 iOS9 上首次启动该应用程序时,无论我是在更新还是刚开始安装。

打开和关闭 iCloud 功能似乎已经解决了这个问题。

切换 iCloud 对我不起作用。重新安装应用程序也没有用。每当我启用断点时,问题似乎就会发生。如果我关闭它们,它会毫无问题地运行。

更改了我的应用程序的名称,因此授权文件应该有所不同。关闭并重新打开重新创建所需的文件。关闭断点使其过滤(奇怪)。

对我来说,我有为我的测试目标指定的代码签名权利。所以该应用程序可以正常构建。但是单元测试无论如何都会退出。从测试目标的构建设置中清除代码签名权利字段解决了这个问题。后。许多。小时。

对我来说,切换 iCloud 功能 off/on 是修复它的方法,因为之后在权利文件中创建了一个新密钥:"APS Environment" 及其值 "production"或 "deployment".

切换到 Xcode 的新版本后,我遇到了这个错误。 None 其他修复程序有效。仔细一看,代码签名身份发生了变化!当我把它放回去时,一切正常。

Xcode 11.1

确保您已为 debugrelease 模式启用它: