0

У меня есть приложение, которое получает удаленные уведомления APN, когда приложение находится в фоновом режиме. Если стиль уведомления - это баннеры, он отлично работает.Очистить оповещения для удаленного APN

Однако, когда стиль уведомления является предупреждением и принимает 10 APN, пользователь должен убрать последующие окна предупреждений после выбора «запуска» для первого предупреждения.

Есть ли способ очистить предупреждения после запуска приложения?

Я попробовал следующее applicationDidBecomeActive: и applicationWillEnterForeground:

[application cancelAllLocalNotifications]; 
application.applicationIconBadgeNumber = 0; 

Но это не работает. У кого-нибудь еще есть эта проблема?

Кроме того, я знаю, что это возможно, потому что WhatsApp способен это сделать.

Спасибо!

+0

Не выдвигайте уведомления, которые не отображаются в качестве предупреждений, когда приложение, которое они представляют, находится на переднем плане? Мне кажется, что, как только пользователь нажимает «Просмотр» в одном из уведомлений, ваше приложение должно молча проглотить остальные уведомления. –

+0

Извините, я забыл упомянуть, что когда приложение находится в фоновом режиме при приеме удаленных APN. Я предположил, что уведомления должны быть проглочены, но здесь это не так ... –

ответ

0

Я четко понимаю, чего вы хотите достичь в этой теме. Однако ваш код не будет работать.

[application cancelAllLocalNotifications]; 

«cancelAllLocalNotifications» относится только к локальным Notifications - которые запланированы приложением и поставляемая прошивка на то же устройство.

Как обсуждается apple, APN обрабатывает удаленное уведомление, когда ваше приложение находится в фоновом режиме. Если ваше приложение находится на переднем плане или в настоящее время активно, ваш делегат будет управлять уведомлением.


Попробуйте обработки уведомления в application:didReceiveRemoteNotification

Вот пример: (вы можете управлять полезной информации здесь):

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 

    for (id key in userInfo) { 
     NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); 
    }  

} 

Вы также можете проверить, является ли ваше приложение на переднем плане или что ваше приложение активно:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{ 
    if(application.applicationState == UIApplicationStateActive) { 
     // app active. 
    } 
    else { 
     // app not active 
    } 
} 
+0

Правильно, я полагал, что это было только для местных уведомлений; но я был в отчаянии. Есть ли способ очистить остальные входящие предупреждения? Благодарю. –

+0

Хм ... Я не думаю, что оповещения будут продолжать появляться, когда приложение находится на переднем плане. (не совсем уверен, хотя). Во всяком случае, попробуйте код, который я отредактировал в своем ответе. – Kimpoy

Смежные вопросы