Как мы можем удаленно отклонить Push-уведомление?

Мое приложение ежедневно транслирует Push Notification (PN) всем пользователям, которые становятся неуместными через 4 часа. Есть ли способ удалить это уведомление в каждом центре уведомлений пользователей, который не использовал его в течение этих 4 часов?

Раньше я думал, что это пока невозможно, но стало надеяться, увидев поведение приложения Google Hangouts - он отправляет PN на Mac и iOS... и если я прочитаю сообщение на Mac, он автоматически сразу удалит его из iOS "Центр уведомлений.

Я провел обширные исследования по Google, неожиданно ничего не нашел на этом - только один вопрос здесь, который был должным образом закрыт!

Ответ 1

Хитрость заключается в том, чтобы сделать фоновое извлечение вашего приложения и обрабатывать push-уведомление, когда приложение находится в фоновом режиме.

Затем в application:didReceiveRemoteNotification:fetchCompletionHandler: установите значок приложения на 0, чтобы все, что вы нажимаете уведомление, удаляются из центра уведомлений.

Отправьте специальное уведомление о нажатии, когда данные не отображаются пользователю, но содержат команду reset состояния push-уведомления.

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

  if([[userInfo objectForKey:@"reset"] boolValue]){
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber: 0];
  }

}

Ответ 2

Отменить уведомление можно только после того, как пользователь нажал. Вы не можете уволить его, если пользователь не открыл его, чтобы открыть.

Если вы хотите отклонить открытое уведомление, вы можете попробовать cancelLocalNotification: отклонить уведомление, представляющее предупреждение в настоящее время. Согласно документации на яблоко: Вы можете отменить определенное запланированное уведомление, вызвав cancelLocalNotification: на объект приложения, и вы можете отменить все запланированные уведомления, вызвав cancelAllLocalNotifications. Оба этих метода также программно отклоняют отображаемое в настоящее время уведомление об оповещении.