Функция didReceiveRemoteNotification вызывается дважды - PullRequest
0 голосов
/ 16 апреля 2019

Я реализую push-уведомление с моей пользовательской полезной нагрузкой JSON, используя облачную передачу сообщений firebase, и она работает.

Проблема, с которой я сталкиваюсь сейчас, - это когда я запускаю уведомление, didRecieve вызывается, и когда пользователь нажимает на уведомление, его снова вызывают.

Я перехожу к другим viewcontroller в didRecieve, так что в моем случае переход на два раза к одному и тому же VC.

Как мне справиться с этой проблемой?

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

Вы можете проверить, если в фоновом режиме:

if (application.applicationState == .background) {
      completionHandler(.noData)
      return
}

Вы можете использовать метод willPresent для создания сообщения alert.

func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (_ options: UNNotificationPresentationOptions) -> Void) {}

Вы также можете отключить в уведомлениях приложения, как вариант.

И если вам нужно в уведомлении приложения И сенсорный вариант:

Вы можете проверить, является ли активный контроллер тем контроллером, который вам нужен.

Надеюсь, эта помощь.

0 голосов
/ 16 апреля 2019

Если вы реализуете application(_:didReceiveRemoteNotification:fetchCompletionHandler:), это может быть ожидаемое поведение, как указано здесь, в документах :

Примечание

Если пользователь открывает ваше приложение из системного предупреждения, система может снова вызвать этот метод, когда ваше приложение собирается выйти на передний план, чтобы вы могли обновить свой пользовательский интерфейс и отобразить информацию, относящуюся к уведомлению.

...