didReceiveRemoteNotification: не вызывается после получения уведомления, и приложение находится в фоновом / приостановленном режиме - PullRequest
0 голосов
/ 16 ноября 2018

В пределах AppDelegate Я просто обновляю applicationIconBadgeNumber:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
    application.applicationIconBadgeNumber += 1
}

Все работает, как ожидалось, когда приложение подключено к Xcode и имеет значение в режиме отладчика .Но только после того, как я подключаю его из Xcode, приходит уведомление, но значок не обновляется.Приложение в фоновом режиме .

Почему?Что не так с моим подходом?Пожалуйста, дайте мне совет?

Ответы [ 4 ]

0 голосов
/ 16 ноября 2018

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

didReceiveRemoteNotification в фоновом режиме

0 голосов
/ 16 ноября 2018

Вам необходимо зарегистрироваться didReceiveRemoteNotification с fetchCompletionHandler из UNUserNotificationCenter метод делегата

func application(
  _ application: UIApplication,
  didReceiveRemoteNotification userInfo: [AnyHashable : Any],
  fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {

  messagingManager?.appDidReceiveMessage(userInfo)
}
0 голосов
/ 16 ноября 2018

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

Полезная нагрузка может выглядеть так:

{
    "aps" : {
        "alert" : "Notification REceived",
        "badge" : 1
    }
}
0 голосов
/ 16 ноября 2018

Ваш messagingManager является необязательным. Вы должны проверить, что это не nil. Если это nil, функция appDidReciveMessage() не сработает

...