从iOS应用图标中删除徽章

时间:2012-03-04 17:25:25

标签: ios iphone badge

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

-(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;

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

5 个答案:

答案 0 :(得分:206)

如果您的应用再次处于有效状态但仍在后台,您应该重置-applicationDidBecomeActive:中的徽章数:

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

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

答案 1 :(得分:8)

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

答案 2 :(得分:3)

在Swift和AppDelegate中

func applicationDidBecomeActive(_ application: UIApplication) {
    application.applicationIconBadgeNumber = 0
}

答案 3 :(得分:2)

  

您也可以使用此代码。

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

或在特定的ViewController中

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

答案 4 :(得分:1)

也许可以在applicationWillResignActiveAppDelegate.m)中调用它:

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

这可以帮助您在应用程序打开时badge清除时push。当用户按notification(一次或两次)时,用户会看到Home Button并清除它。此外,app closed是{{1}}(用户打开后清除)也很清楚。

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