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

问题描述:

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

我怎样才能清除应用程序图标徽章?

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

+0

谢谢Fabian!你的答案正是我所需要的:) thannnkkss – thar 2012-03-04 18:06:32

+0

-applicationDidBecomeActive和-applicationWillEnterForeground:做同样的更少还是更多?将重置置于-applicationDidBecomeActive中时。它适用于我两种情况。 – thar 2012-03-04 18:23:50

+0

-applicaionDidBecomeActive:也将在从电话返回时调用。 -applicationWillEnterForeground:在你的情况下是合适的方法。 – 2012-03-05 15:18:09

如果您的应用程序再次激活,并仍然在后台,你应该在-applicationDidBecomeActive:重置徽章数量,以及:

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

如果你的应用程序仍然在后台运行-application:didFinishLaunchingWithOptions:将不会被调用。

+0

谢谢!然后有一些有意义的东西:)工程只是找到,我只在重置它在BecomeActive方法。不能为什么我应该两次? – thar 2012-03-04 18:05:44

+6

在''-applicationDidBecomeActive:''中重置一次就可以了。因为当''-application:didFinishLaunchingWithOptions:''被调用时,这个方法也会被调用。请接受我的回答:) – Mark 2012-03-04 19:45:10

您也可以使用此代码。

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

或者在一个特定的ViewController

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

这个确切的代码是问题的一部分。 – Brian 2017-03-28 17:39:11

+1

为什么有人投票拒绝这个答案? – 2017-05-11 04:45:04

也许叫它applicationWillResignActive(在AppDelegate.m):

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

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

Here你可以看到何时调用这个方法。