SwiftUI应用程序生命周期

问题描述

在我的第一个SwiftUI应用中,我启用了远程通知后台进程。 我确实添加一个AppDelegate类来支持通知

这些通知会将应用徽章设置为适当的值。

由于此应用启用了这些后台模式,因此一些生命周期事件不起作用:

  • applicationDidBecomeActive
  • applicationWillResignActive
  • applicationDidEnterBackground
  • applicationWillEnterForeground

问题:我在哪里/如何重置徽章?

解决方法

这是您观察didBecomeActiveNotification的方法:

@main
struct TestApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onReceive(NotificationCenter.default.publisher(for: UIApplication.didBecomeActiveNotification)) { _ in
                    UIApplication.shared.applicationIconBadgeNumber = 0
                }
        }
    }
}

您可以用相同的方式观察其他通知。


或者,您可以使用@EnvironmentObject来跟踪应用程序状态: