【发布时间】:2020-05-19 22:50:33
【问题描述】:
通过实现 CloudKit 的 CKShare 功能以我的方式工作。 我已经设法到达共享记录的部分(例如通过电子邮件),并且还可以确认用户收到了邀请。问题是,当用户接受记录时,应用程序会弹出但没有任何反应。为了提供帮助,这里是应用程序的一些关键元素,如果我错了,请告诉我。
1) 该应用程序不需要用户使用他们的 Apple ID 登录
2) 当我使用电缆将手机连接到计算机时(也就是尚未使用 TestFlight),我正在通过直接在两部不同手机(具有单独的 Apple ID)上构建的应用程序进行测试。
3) 我已在 CloudkitDashboard 中查看,我可以看到已共享的记录,也可以看到已共享的记录,但我没有看到用户电子邮件,而是我发送了邀请,我看到了我的电子邮件以及以下事实记录哈哈被“接受”了
4) 我在 Info.plist 文件中添加了 CKSharingSupported 键。
5) AppDelegate.swift 文件中用于接受 CKShare 的代码如下。我很想引起您对“用户接受共享”字符串永远不会打印的事实的关注,这让我认为这部分代码永远不会运行。
func application(_ application: UIApplication, userDidAcceptCloudKitShareWith cloudKitShareMetadata: CKShare.Metadata) {
print("User Accepted the Share")
let acceptShareOperation: CKAcceptSharesOperation = CKAcceptSharesOperation(shareMetadatas: [cloudKitShareMetadata])
acceptShareOperation.qualityOfService = .userInteractive
acceptShareOperation.perShareCompletionBlock = {meta, share,
error in
print("The Record Share was Accepted")
}
acceptShareOperation.acceptSharesCompletionBlock = {
error in
/// Send your user to where they need to go in your app
let viewController: SNPDetailsViewController = self.window?.rootViewController as! SNPDetailsViewController
viewController.fetchShare(cloudKitShareMetadata)
}
CKContainer(identifier:
cloudKitShareMetadata.containerIdentifier).add(acceptShareOperation)
}
任何能指导我哪里出错的见解,将不胜感激。
感谢您的宝贵时间!
【问题讨论】:
标签: ios swift metadata cloudkit ckshare