我试图在userDidAcceptCloudKitShareWith被调用时得到通知。传统上这是在 中调用的,App Delegate但是因为我正在构建一个 iOS 14+App用作我的根对象。关于如何添加userDidAcceptCloudKitShareWith到我的 App 类,我还没有找到任何文档,所以我正在UIApplicationDelegateAdaptor使用一个App Delegate类,但是它似乎userDidAcceptCloudKitShareWith从来没有被调用过?
import SwiftUI
import CloudKit
// Our observable object class
class ShareDataStore: ObservableObject {
static let shared = ShareDataStore()
@Published var didRecieveShare = false
@Published var shareInfo = ""
}
@main
struct SocialTestAppApp: App {
@StateObject var shareDataStore = ShareDataStore.shared
@UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate
var body: some Scene {
WindowGroup {
ContentView().environmentObject(shareDataStore)
}
}
}
class AppDelegate: NSObject, UIApplicationDelegate { …Run Code Online (Sandbox Code Playgroud) 运行 iOS 14.x 或更低版本的 UICloudSharingController 将“添加人员”显示为“人员”表第一部分的最后一行。
从 iOS 15.x(包括新的 15.2 beta)开始,包含“添加人员”的行不存在。
在苹果解决这个问题之前,有人知道解决办法吗?Apple 第一方应用程序(例如笔记)似乎不受此问题的影响,但我所有使用 UICloudSharingController 共享的应用程序都出现此问题,即使是那些未在 xcode 13.x 下重新编译的应用程序
我已成功将CKShareURL 保存到 CloudKit,并且可以看到用户位于INVITEDCloudKit 仪表板中。我的 Mac 应用程序通过电子邮件将 URL 发送给该人,但当他们单击该 URL 时,他们只能在 icloud.com 上看到此屏幕:
单击“确定”会使所有内容消失,因此您只能看到网页上的背景。
我的理解是,该 URL 应该打开我的 Mac 应用程序,它将userDidAcceptCloudKitShareWith在我的应用程序委托中触发。但它什么也没做。
这可能是因为我的应用程序正在开发中,尚未出现在 Mac App Store 中吗?我是否需要自定义 URL 方案才能打开我的应用程序?
关于这些东西的文档非常稀疏。我很乐意有人能提供的任何帮助。
在我的应用程序中,我决定使用 CloudKit 作为我的同步后端。我的应用程序与项目无关,但为了简单起见,我们可以这么说......
所以......在我的应用程序中,用户将有多个项目。其中每个都包含与该项目关联的多个实体。比如任务,还有提醒等等。
所有这些数据将存储在用户的私人数据库中。公共数据库中不会有任何内容。
现在一个用户可以拥有多个项目。
我的第一个问题:每个项目都应该在它自己的 CKRecordZone 中吗?我没有看到这样做的好处?!?有人可以向我解释一下拥有多个记录区的好处是什么吗?所以目前所有项目都在一个区域。
接下来,我希望用户能够与其他人共享他的所有数据。目前的问题是,由于该项目当前是我数据库中的根记录,我需要为每个项目创建一个共享,对吗?!?在我的应用程序中,单独邀请用户加入每个项目实际上没有意义,因此我想以某种方式对其进行存档。创建一个将项目作为子项目的新根记录,然后用户邀请某人加入这个新根记录是否有意义?
最后一个问题...是否有类似 Sack-Team 之类的组织可以询问有关 CloudKit 的问题?似乎比在 stackoverflow 上开始一个新问题更容易,因为我的问题非常针对我的应用程序......