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

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

[UIApplication sharedApplication].applicationIconBadgeNumber = 0;

【问题讨论】:

    标签: ios xcode apple-push-notifications


    【解决方案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://stackoverflow.com/a/59965183/7082339

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-07
          • 1970-01-01
          • 2016-11-23
          • 1970-01-01
          相关资源
          最近更新 更多