我正在努力CKShare
在 Swift 4 的 macOS 应用程序中接受 a。我已经完成了以下所有操作:
- 创建
CKShare
并将其保存rootRecord
到 CloudKit - 添加参与者 (
CKShare.Participant
) - 我已经确认它
CKShare
在 CloudKit 服务器上,并且我邀请的人可以访问它。这是截图:https ://d.pr/i/0sMFQq
当我单击与 关联的共享链接时CKShare
,它会打开我的应用程序,但没有任何反应并且userDidAcceptCloudKitShareWith
不会触发。
func application(_ application: NSApplication, userDidAcceptCloudKitShareWith metadata: CKShareMetadata) {
print("Made it!") //<-- This never gets logged :(
let shareOperation = CKAcceptSharesOperation(shareMetadatas: [metadata])
shareOperation.qualityOfService = .userInteractive
shareOperation.perShareCompletionBlock = {meta, share, error in
print("meta \(meta)\nshare \(share)\nerror \(error)")
}
shareOperation.acceptSharesCompletionBlock = { error in
if let error = error{
print("error in accept share completion \(error)")
}else{
//Send your user to where they need to go in your app
print("successful share:\n\(metadata)")
}
}
CKContainer.default().add(shareOperation)
}
我必须在 info.plist 中包含某种 URL 方案吗?或者也许是我需要在我的NSApplicationDelegate
代表中遵守的协议?对于我的一生,我无法弄清楚该怎么做。提前致谢!
更新
我已经尝试了更多的东西。当我在网络浏览器中打开共享链接时,我看到:
单击“确定”会使屏幕逐渐消失:
不是特别有帮助。:) 这样做之后,参与者在 CloudKit 中的状态仍然是Invited,所以共享仍然没有被接受。
当我单击消息中的共享链接时,我会看到如下弹出窗口: 单击打开后,我的应用程序的新副本出现在 Dock 中,然后应用程序突然关闭。崩溃日志指出:
由于未捕获的异常“CKException”而终止应用程序,原因:“应用程序缺少必需的权利 com.apple.developer.icloud-services”
我尝试在 Xcode 的 Capabilities 部分中关闭再打开 iCloud,但没有任何变化。我知道这个例外是不对的,因为我可以正常启动我的应用程序并整天使用 CloudKit。只有CKShare
导致此崩溃的原因。
这是一团糟。救救我,欧比旺克诺比,你是我唯一的希望。