【发布时间】:2019-09-02 12:36:41
【问题描述】:
我有一个使用 iCloud 的应用程序。这工作正常。
我现在尝试编写一个 UI 测试,首先检查 iCloud 帐户是否可访问,即用户是否登录到 iCloud 并且为应用启用了 iCloud。
为此,我尝试调用(导入了 CloudKit)
let container = CKContainer(identifier: kICloudContainerID)
container.accountStatus() { (status, error) in
// …
}
但是,当我尝试访问 CKContainer(第一行)时,我得到了错误
The application is missing required entitlement com.apple.developer.icloud-services
(null)
当然,我的应用设置了 iCloud 权利,但无法为测试目标设置此类权利。
我已阅读this post。建议的解决方案(禁用断点、切换 iCloud 功能、清除代码签名权利)不起作用。
知道如何解决这个问题吗?
编辑:
为了进行测试,我创建了一个包含 UI 测试的新单视图应用程序。
在应用目标中,我只启用了 CloudKit:
在app delegate中,我导入了CloudKit,并访问了CKContainer:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let container = CKContainer(identifier: "iCloud.com.zeh4soft.EntitlementUITest")
return true
}
这行得通。
在 UI 测试中,我还导入了 CloudKit,并添加了同一行:
func testExample() {
let container = CKContainer(identifier: "iCloud.com.zeh4soft.EntitlementUITest")
}
【问题讨论】:
标签: xcode cloudkit xcode-ui-testing code-signing-entitlements