2

在 iOS 13 世界中,我有这样的代码:

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
        func windowScene(_ windowScene: UIWindowScene, userDidAcceptCloudKitShareWith cloudKitShareMetadata: CKShare.Metadata) {
                // do stuff with the metadata, eventually call CKAcceptSharesOperation
        }
}

我正在将我的应用程序迁移到新的 SwiftUI 应用程序生命周期,但不知道将这个方法放在哪里。它曾经存在于 iOS13 之前的 AppDelegate 中,我试着回到那个,但 AppDelegate 版本永远不会被调用。

似乎没有类似于 UIApplicationDelegateAdaptor 的 SceneDelegateAdaptor 可用,它将为旧代码提供桥梁。

所以,我迷路了。如何在 SwiftUI 应用程序生命周期中接受 CloudKit 共享?

4

1 回答 1

1

您仍然可以将 AppDelegate 与 SwiftUI 的新生命周期一起使用,直到 Apple 发布 API 以在 SwiftUI 应用程序生命周期中本地处理此问题。

class AppDelegate: NSObject, UIApplicationDelegate {
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
        return true
    }
}

@main
struct MyApp: App {

    @UIApplicationDelegateAdaptor(AppDelegate.self) var appDelegate

    var body: some Scene {
        WindowGroup {
            ContentView()
        }
    }
}

阅读更多

于 2020-08-07T08:27:41.197 回答