Удаление значка из иконки приложения iOS - PullRequest
54 голосов
/ 04 марта 2012

В этом приложении, которое я пытаюсь сделать, я использую push-уведомления. Эта часть работает просто отлично. Когда я отправляю уведомление, я также добавляю значок к значку приложения. Проблема в том, что когда я запускаю приложение, оно должно снова исчезнуть, но это не так.

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

206 голосов
/ 04 марта 2012

Если ваше приложение снова становится активным и все еще находится в фоновом режиме, вам также следует сбросить счетчик значков в -applicationDidBecomeActive::

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

Если ваше приложение все еще работает в фоновом режиме, -application:didFinishLaunchingWithOptions: не будет вызываться.

8 голосов
/ 04 марта 2012

Скорее всего, -application:didFinishLaunchingWithOptions: не вызывается, потому что ваше приложение все еще работает в фоновом режиме.Чтобы убрать счетчик значков при запуске приложения из фона, вам также нужно сбросить номер значка в -applicationWillEnterForeground:.

3 голосов
/ 03 декабря 2018

In Swift и InDelegate

func applicationDidBecomeActive(_ application: UIApplication) {
    application.applicationIconBadgeNumber = 0
}
2 голосов
/ 28 марта 2017

Вы также можете использовать эти коды.

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

или в конкретном ViewController

- (void)awakeFromNib {
   [UIApplication sharedApplication].applicationIconBadgeNumber = 0;
}
1 голос
/ 25 июля 2017

Возможно, позвоните в applicationWillResignActiveAppDelegate.m):

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

Это поможет вам очистить badge, если push придет, когда приложение открыто.Пользователь видит notification и вы очищаете его, когда нажимаете Home Button (один или два раза).Также будет ясно, если app означает closed (очистить после того, как пользователь откроет его).

Здесь вы можете увидеть, когда вызывался этот метод.

...