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

Posted

技术标签:

【中文标题】如何在 iOS 中清除推送通知徽章计数?【英文标题】:How to clear push notification badge count in iOS? 【发布时间】:2012-12-26 09:43:41 【问题描述】:

我想在应用启动后清除推送通知徽章计数。我不清楚在哪里设置以下代码。请简要说明清除徽章计数。

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

【问题讨论】:

【参考方案1】:

你应该这样设置:

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

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

- (void)applicationWillEnterForeground:(UIApplication *)application

- (void)applicationDidBecomeActive:(UIApplication *)application

对于 Swift 3+

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

【讨论】:

您在模拟器或设备中检查的位置? 我遇到了同样的问题 如果您尝试在viewDidLoad() 方法中获取用户坐标,它总是会给出0,0 结果,因为CLLocation 尚未初始化。所以使用Delegate方法获取位置详情-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation 对于从 ios 获取位置的示例,请查看此示例代码 developer.apple.com/library/ios/#samplecode/LocateMe/…【参考方案2】:

在 swift 3+ 中

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

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

【讨论】:

【参考方案3】:

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

【讨论】:

我明白你在这里的意思,但我不同意你总是想递减......许多应用程序使用徽章来表示“自你成为最后在应用程序中”,但他们不希望您阅读所有内容,因为您可能不感兴趣。在这种情况下,实际上只是在他们进入应用程序后清除徽章。是的,您可以编写递减 10 倍的代码,但这会很乏味。 作为用户,当应用程序继续拥有徽章时,即使没有什么可阅读的,我也会感到烦恼。这通常是因为应用程序中的错误,但无论哪种方式,在启动时清除徽章都可以绕过用户的这种烦恼。 这真的取决于您如何在应用中使用图标徽章编号,如果您的用户觉得需要清除应用徽章计数。你做错了什么。 # 如果是待办事项应用程序,你不想清除徽章计数。 # 如果您将其用作计步器,请每天重置计数器。请使用常识,3岁的答案无需评论。【参考方案4】:

您可以在代码中的任何位置设置该代码。没关系。但一般情况下,保存在UIApplicationDidFinishLaunching..

【讨论】:

【参考方案5】:
    UIApplication.shared.applicationIconBadgeNumber = 1
    UIApplication.shared.applicationIconBadgeNumber = 0

【讨论】:

为了清除您的通知,您必须首先增加您的计数然后为零。这是ios错误 感谢您提供此代码 sn-p,它可能会提供一些有限的即时帮助。 proper explanation would greatly improve its long-term value 通过展示为什么这是一个很好的解决问题的方法,并将使其对未来有其他类似问题的读者更有用。请edit您的回答添加一些解释,包括您所做的假设。【参考方案6】:

适用于 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://***.com/a/59965183/7082339

【讨论】:

以上是关于如何在 iOS 中清除推送通知徽章计数?的主要内容,如果未能解决你的问题,请参考以下文章

在 ios7 中更新推送通知的徽章计数

在 ios7 中更新推送通知的徽章计数

Firebase 推送通知徽章计数是不是在 iOS 中自动增加?

如何在 android 和 ios 收到的推送通知上设置徽章?

ios:此有效负载格式中的推送通知徽章计数未增加

IOS 应用程序中未收到 Firebase 推送通知徽章计数