【发布时间】:2012-12-26 09:43:41
【问题描述】:
我想在应用启动后清除推送通知徽章计数。我不清楚在哪里设置以下代码。请简要说明清除徽章计数。
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
【问题讨论】:
标签: ios xcode apple-push-notifications
我想在应用启动后清除推送通知徽章计数。我不清楚在哪里设置以下代码。请简要说明清除徽章计数。
[UIApplication sharedApplication].applicationIconBadgeNumber = 0;
【问题讨论】:
标签: ios xcode apple-push-notifications
你应该这样设置:
[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
在 swift 3+ 中
在您的 AppDelegate.Swift 中,当您的应用程序处于活动状态时清除所有内容,如下所示。
func applicationDidBecomeActive(_ application: UIApplication) {
UIApplication.shared.applicationIconBadgeNumber = 0
}
【讨论】:
好吧,更好的方法是创建一个减去徽章编号的函数,然后创建一个 UIButton 让用户清除徽章。在默认邮件应用程序中,如果您阅读一封电子邮件,徽章将从图标中减去一个。 您永远不应该在启动或恢复时将其设置为 0,这毫无意义并且会使应用程序看起来很糟糕。 当用户与该事件交互时减去它是最好的方法。让你的应用更专业,如果你只是在应用启动时重置它,谁知道床是什么意思,还不如不使用它。
【讨论】:
您可以在代码中的任何位置设置该代码。没关系。但一般情况下,保存在UIApplicationDidFinishLaunching..
【讨论】:
UIApplication.shared.applicationIconBadgeNumber = 1
UIApplication.shared.applicationIconBadgeNumber = 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
【讨论】: