如何在iPhone上单击应用程序图标清除徽章计数器?

use*_*189 3 iphone objective-c apple-push-notifications ios swift

我们使用phonegap开发了一个ios应用程序,并在我们的应用程序中实现了推送通知功能.推送通知对我们来说非常好.我们已经为两者(警报和徽章)配置了推送通知,两者都可以正常工作.当我们单击警报列表时,它会将我们重定向到应用程序并清除警报列表中的所有通知,并且徽章计数器也设置为0.

但是,当我们点击应用程序图标(徽章计数器)时,它会将应用程序带到前台,但徽章计数器和警报不会被清除.

我们在didFinishLaunchingWithOptions方法(在appdelegate.m文件中)中使用了以下代码,该方法清除警报并仅在点击警报时重置徽章

 application.applicationIconBadgeNumber = 0;
Run Code Online (Sandbox Code Playgroud)

当我们点击带有徽章计数器的应用程序图标时,任何人都可以向我们提供显示相同行为的解

Anb*_*hik 21

要在应用程序变为活动状态时清除徽章计数,请使用delegate方法

调用[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0]; applicationWillEnterForegroundapplicationDidBecomeActive中

- (void)applicationWillEnterForeground:(UIApplication *)application

{
 [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
 }
Run Code Online (Sandbox Code Playgroud)

要么

- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
}
Run Code Online (Sandbox Code Playgroud)

迅速

func applicationWillEnterForeground(application: UIApplication) {
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
}
Run Code Online (Sandbox Code Playgroud)

要么

func applicationDidBecomeActive(application: UIApplication) {
UIApplication.sharedApplication().applicationIconBadgeNumber = 0
}
Run Code Online (Sandbox Code Playgroud)

对于Swift 3:

UIApplication.shared.applicationIconBadgeNumber = 0
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


JBa*_*s35 6

如果您使用的是支持多个窗口的 iOS 13,请对方法 Scene Became active 执行相同的操作。此方法位于 SceneDelegate 上。

func sceneDidBecomeActive(_ scene: UIScene) {
    UIApplication.shared.applicationIconBadgeNumber = 0;
}
Run Code Online (Sandbox Code Playgroud)


Cir*_*yon 5

在 Swift 中,要放入以下工作func applicationWillEnterForeground(application: UIApplication)

UIApplication.sharedApplication().applicationIconBadgeNumber = 0
Run Code Online (Sandbox Code Playgroud)