如何在 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 中清除推送通知徽章计数?的主要内容,如果未能解决你的问题,请参考以下文章
Firebase 推送通知徽章计数是不是在 iOS 中自动增加?