Swift-删除推送通知徽章号码?

Swift- Remove Push Notification Badge number?

我正在尝试快速删除图标徽章,但 PFInstallation 似乎不再起作用。我该怎么做?

您可以 "remove" 通过将应用徽章图标设置为 0:

Swift < 3.0

UIApplication.sharedApplication().applicationIconBadgeNumber = 0

Swift 3.0+

UIApplication.shared.applicationIconBadgeNumber = 0

这个问题说明什么时候可以使用它:How to clear push notification badge count in iOS?

Swift 4.2

在 AppDelegate 中,只需输入以下代码:

    func applicationDidBecomeActive(_ application: UIApplication) {
        application.applicationIconBadgeNumber = 0
    }

Swift 5

在 AppDelegate didFinishLaunchingWithOptions

UIApplication.shared.applicationIconBadgeNumber = 0

Swift 5

虽然您可以将它放在 AppDelegate didFinishLaunchingWithOptions 中,但如果应用处于非活动状态并已转为活动状态,这将不会清除标志。

如果您希望清除徽章而不考虑之前的状态,您需要将其放入 SceneDelegate 而不是 AppDelegate。

func sceneDidBecomeActive(_ scene: UIScene) {
    UIApplication.shared.applicationIconBadgeNumber = 0
}

一种更面向 SwiftUI 的方法可能是监听根视图中 @Environment(\.scenePhase) var scenePhase 的变化。然后,如果新阶段是 .active,请将 UIApplication.shared.applicationIconBadgeNumber 设置为 0,如其他答案所述。

示例代码:

@main
struct MRPApp: App {
    @Environment(\.scenePhase) var scenePhase
    @UIApplicationDelegateAdaptor(AppDelegate.self) var delegate
    var body: some Scene {
        WindowGroup {
            ContentView()
                .onChange(of: scenePhase) { newPhase in
                    if newPhase == .active {
                        UIApplication.shared.applicationIconBadgeNumber = 0
                    }
                }
        }
    }
}