从iOS应用程序图标中移除徽章

在我试图做的这个应用程序中,我使用推送通知。 这部分工作得很好。 当我发送通知时,我还会将徽章添加到应用图标。 问题是,当我午餐的应用程序,它应该再次消失,但事实并非如此。

-(IBAction)Push{ NSMutableDictionary *data = [NSMutableDictionary dictionary]; [data setObject:@"Numfeud: Troels made a move!" forKey:@"alert"]; [data setObject:[NSNumber numberWithInt:1] forKey:@"badge"]; [data setObject:@"bar" forKey:@"foo"]; [PFPush sendPushDataToChannelInBackground:@"GameChannel2" withData:data]; } 

application didFinishLaunchingWithOptions我试图设置徽章0这样:

 [UIApplication sharedApplication].applicationIconBadgeNumber = 0; 

如何清除应用程序图标徽章?

如果您的应用程序再次处于活动状态,并仍处于后台,则应重置-applicationDidBecomeActive:的徽章计数:

 - (void)applicationDidBecomeActive:(UIApplication *)application { application.applicationIconBadgeNumber = 0; } 

如果您的应用仍在后台运行,则应用-application:didFinishLaunchingWithOptions:将不会被调用。

可能,应用程序-application:didFinishLaunchingWithOptions:没有被调用,因为你的应用程序仍在后台运行。 为了在应用程序从后台启动时删除徽章计数,您必须在-applicationWillEnterForeground:重置徽章编号。

也许在applicationWillResignActive (在AppDelegate.m )调用它:

 -(void)applicationWillResignActive:(UIApplication *)application{ [UIApplication sharedApplication].applicationIconBadgeNumber = 0; } 

这将帮助你清除badge如果push来应用程序正在打开。 用户看到notification并按下“ Home Button (一次或两次),即可清除该notification 。 此外,它将清楚如果appclosed (用户打开后清除)。

在这里你可以看到这个方法调用的时候。

你也可以使用这个代码。

 - (void)applicationDidBecomeActive:(UIApplication *)application { application.applicationIconBadgeNumber = 0; } 

或者在特定的ViewController中

 - (void)awakeFromNib { [UIApplication sharedApplication].applicationIconBadgeNumber = 0; }