我们使用 phonegap 开发了一个 ios 应用程序,并在我们的应用程序中实现了推送通知功能。 推送通知对我们来说工作得很好。我们已经为两者(警报和角标(Badge))配置了推送通知,两者都可以正常工作。 当我们单击警报列表时,它会将我们重定向到应用程序并清除警报列表中的所有通知,并且角标(Badge)计数器也设置为 0。
但是当我们点击应用程序图标(角标(Badge)计数器)时,它会将应用程序带到前台,但角标(Badge)计数器和警报不会被清除。
我们在 didFinishLaunchingWithOptions 方法(在 appdelegate.m 文件中)中使用了以下代码来清除警报并仅在单击警报时重置角标(Badge)
application.applicationIconBadgeNumber = 0;
当我们点击带有角标(Badge)计数器的应用程序图标时,任何人都可以为我们提供显示相同行为的解决方案。
最佳答案
要在应用程序激活时清除角标(Badge)计数,请使用 delegate
方法。您可以在 AppDelegate 中使用 UIApplicationDelegate
。
在 applicationWillEnterForeground 或 applicationDidBecomeActive 中调用 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
- (void)applicationWillEnterForeground:(UIApplication *)application
{
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
或
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
swift
func applicationWillEnterForeground(application: UIApplication) {
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
}
或
func applicationDidBecomeActive(application: UIApplication) {
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
}
对于 Swift 3:
UIApplication.shared.applicationIconBadgeNumber = 0
iOS 13 >
func sceneDidBecomeActive(_ scene: UIScene) {
UIApplication.shared.applicationIconBadgeNumber = 0
}
关于ios - 如何在 iphone 中点击应用程序图标时清除角标(Badge)计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311910/