11

一旦用户选择其中一个推送通知,我想清除我的应用程序的所有推送通知。

我在这里看到其他线程说这在 iOS 中是不可能的。但我从应用商店下载了一个应用程序,它做同样的事情。

4

2 回答 2

28

如果是本地通知,则要删除徽章图标,您必须这样做

UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.applicationIconBadgeNumber = 1;

如果是推送通知,您可以通过下面编写的代码来完成

[UIApplication sharedApplication].applicationIconBadgeNumber=0;

你可以在任何你想要的地方调用这些方法。例如,如果您想在应用程序启动时清除通知,则将其写入

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

如果您的应用不使用您必须首先设置的徽章编号,请重置它以将其从通知中心删除。

[[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
[[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
于 2013-08-05T12:31:42.623 回答
2

你需要做的就是

application.applicationIconBadgeNumber = 0;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions.

编辑

如果您没有关闭您的应用程序,而只是将其发送到后台。然后将其添加到您的以下函数中。

  - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    if ( application.applicationState == UIApplicationStateInactive || application.applicationState == UIApplicationStateBackground  )
    {
         //opened from a push notification when the app was on background
         application.applicationIconBadgeNumber = 0;
    }
}
于 2013-08-05T12:15:47.637 回答