Я знаю, что это взлом, но вы можете удалить все уведомления, изменив номер значка в вашем приложении.
- (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];
...
}
Возможно, это не лучшая практика, но она выполнит свою работу, и клиент не почувствует разницы. Мне нравится называть это временным. исправить, пока я не наткнулся на лучшее решение. Надеюсь, это кому-нибудь поможет!