【发布时间】:2023-01-12 04:54:22
【问题描述】:
使用新的 SwiftUI 生命周期通常不再有 AppDelegate。但是,为了实现 Firebase Messaging,建议在 Firebase 文档上实现 AppDelegate 并使用以下方式附加它:
@main
struct ExampleApp: SwiftUI.App {
// register app delegate for Firebase setup
@UIApplicationDelegateAdaptor(AppDelegate.self) var delegate //<--- HERE
@StateObject var appState = AppState()
var body: some Scene {
WindowGroup {
ContentView()
.environmentObject(appState)
}
}
}
在这个 AppDelegate 函数中,人们获得了一个 FCM 令牌,通过该令牌可以识别设备,以便随后向其远程发送通知。此令牌必须发送到服务器。这可以在AppDelegate 内的相应函数内完成。但是,有一个处理用户数据和写入服务器的类 AppState(ObservableObject 协议),因此将它传递给此类(或从 AppDelegate 在类中检索)更有意义?)然后从那里推动它。
如何做到这一点?
编辑:我想这可以通过在 AppDelegate 中使用 static 属性来实现,如 this answer 中所述。使用静态变量全局访问变量不是坏习惯吗?还有其他(更好)的方法吗?
【问题讨论】:
-
请参阅链接的解决方案。它还展示了如何在没有 appdelegate 的情况下设置 firebase
-
@flatasearth 请再次阅读问题。我遇到的问题是结果使用与该链接中使用的概念完全相同的概念。
标签: ios swift swiftui appdelegate