ios - 如何在 iphone 中点击应用程序图标时清除角标(Badge)计数器?

标签 ios objective-c iphone swift apple-push-notifications

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

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

我们在 didFinishLaunchingWithOptions 方法(在 appdelegate.m 文件中)中使用了以下代码来清除警报并仅在单击警报时重置角标(Badge)

 application.applicationIconBadgeNumber = 0;

当我们点击带有角标(Badge)计数器的应用程序图标时,任何人都可以为我们提供显示相同行为的解决方案。

最佳答案

要在应用程序激活时清除角标(Badge)计数,请使用 delegate 方法。您可以在 AppDelegate 中使用 UIApplicationDelegate

applicationWillEnterForegroundapplicationDidBecomeActive 中调用 [[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
}

enter image description here

关于ios - 如何在 iphone 中点击应用程序图标时清除角标(Badge)计数器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311910/

相关文章:

ios - 带有图像的自动布局按钮调整为实际图像大小

ios - 从图像Objective c中提取纬度和经度

iphone - iOS : How To Make Static or Fix Background on View Controller

iphone - ipad 中的 itunes 库工具

ios - 如何在更改 UILabel 文本时有延迟

ios - Swift 中的集合和协议(protocol)

ios - 将 NSString 的子字符串更改为粗体

iOS AVPlayerLayer 不播放本地视频

c++ - 如何将 Objective C 的类实例传递给 C++ 方法?

iphone - SQLite3 数据库未通过 NSLog 在控制台上显示条目(将数据保存到数据库有效)