如何在iOS中清除推送通知徽章计数?

时间:2012-12-26 09:43:41

标签: ios xcode apple-push-notifications

我想在推出应用程序后清除推送通知徽章计数。我不清楚在何处设置以下代码。请简要说明清除徽章数量。

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

6 个答案:

答案 0 :(得分:72)

您应该设置:

  

[UIApplication sharedApplication] .applicationIconBadgeNumber = 0;

在 这些 AppDelegate 方法中的任何一个如果应用程序启动并发送到后台,那么启动应用程序didFinishLaunchingWithOptions方法将不会被调用,因此请使用以下任一方法:

- (void)applicationWillEnterForeground:(UIApplication *)application

- (void)applicationDidBecomeActive:(UIApplication *)application

对于Swift 3 +

- func applicationWillEnterForeground(_ application: UIApplication)
- func applicationDidBecomeActive(_ application: UIApplication)

答案 1 :(得分:10)

在swift 3 +

在您的 AppDelegate.Swift 中,当您的应用程序处于活动状态时清除如下所示。

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

答案 2 :(得分:2)

嗯,更好的方法是创建一个减去徽章编号的函数,然后创建一个UIButton让用户清除徽章。在默认邮件应用程序中,如果您阅读一封电子邮件,徽章将从图标中减去一封。 你不应该在启动或恢复时将它设置为0,这是没有意义的,并使应用程序看起来很糟糕。 当用户与该事件交互时,减去它是最好的方法。让你的应用程序更专业,如果你只是在应用程序启动时重置它,谁知道什么是床位意味着,也可以不使用它。

答案 3 :(得分:1)

您可以在代码中的任何位置设置该代码。无所谓。但一般来说,保留在UIApplicationDidFinishLaunching ..

答案 4 :(得分:0)

    UIApplication.shared.applicationIconBadgeNumber = 1
    UIApplication.shared.applicationIconBadgeNumber = 0

答案 5 :(得分:0)

iOS 13+

您需要在 SceneDelegate.swift 文件而不是 AppDelegate.swift

文件中实现这些功能之一
func sceneDidBecomeActive(_ scene: UIScene) {
    UIApplication.shared.applicationIconBadgeNumber = 0
}


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

一般将 AppDelegate 视为应用程序,而 SceneDelegate 则用于特定实例。 更好的解释在这里 -> https://stackoverflow.com/a/59965183/7082339