Как удалить Push Notification в Центре уведомлений после просмотра - PullRequest
9 голосов
/ 21 ноября 2011

Есть ли способ обработать push-уведомление из Центра уведомлений после нажатия и удалить его, когда мое приложение уже запущено?

1 Ответ

6 голосов
/ 06 января 2012

Я знаю, что это взлом, но вы можете удалить все уведомления, изменив номер значка в вашем приложении.

- (void)application:(UIApplication*)application didReceiveRemoteNotification (NSDictionary*)payload
{
    NSLog(@"Received notification: %@", payload);
    //swapping between two badge numbers to clear notifications
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    ...
}

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

- (void)application:(UIApplication*)application didReceiveRemoteNotification (NSDictionary*)payload
{
    NSLog(@"Received notification: %@", payload);
    /*
     storing current badge number then swapping between 2 values to make sure we 
     clear the badge number. Once this is done set badge number back to original 
     value.
    */
    int badgeNum = [[UIApplication sharedApplication] applicationIconBadgeNumber]
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:1];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:badgeNum];
    ...
}

Возможно, это не лучшая практика, но она выполнит свою работу, и клиент не почувствует разницы. Мне нравится называть это временным. исправить, пока я не наткнулся на лучшее решение. Надеюсь, это кому-нибудь поможет!

...