Подтвердить что ты не робот

Удаление значка с иконки приложения iOS

В этом приложении, которое я пытаюсь сделать, я использую 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;

Как я могу удалить значок значка приложения?

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

или в определенном ViewController

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

Ответ 4

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

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

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

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

Ответ 5

В Swift и в AppDelegate

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