Уведомления FCM не получают iOS - PullRequest
2 голосов
/ 27 марта 2019

Я использую FCM для получения удаленных push-уведомлений.

Таким образом, при получении первого токена FCM из приведенного ниже обратного вызова я могу инициировать уведомление и получать их правильно.

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

После перезапуска приложения я получаю новый токен FCM. Новый токен не вызывает никаких уведомлений.

Предварительные условия, которые я выполняю согласно документации: https://firebase.google.com/docs/cloud-messaging/ios/client

Использование FirebaseMessaging (3.3.0)

1 Ответ

2 голосов
/ 30 марта 2019

Так что я нашел решение, Каждый раз после получения свежего токена FCM от обратного вызова.

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String)

Мы должны перерегистрировать удаленное push-уведомление.

if #available(iOS 10.0, *) {
        let center = UNUserNotificationCenter.current()
        center.requestAuthorization(options: [.badge, .alert, .sound]) {
            (granted, error) in
            if granted {
                DispatchQueue.main.async {
                    UIApplication.shared.registerForRemoteNotifications()
                }
            } else {
                //print("APNS Registration failed")
                //print("Error: \(String(describing: error?.localizedDescription))")
            }
        }
    } else {
        let type: UIUserNotificationType = [UIUserNotificationType.badge, UIUserNotificationType.alert, UIUserNotificationType.sound]
        let setting = UIUserNotificationSettings(types: type, categories: nil)
        UIApplication.shared.registerUserNotificationSettings(setting)
        UIApplication.shared.registerForRemoteNotifications()
    }

FirebaseMessagingперенастроит новый токен FCM с токеном устройства.

Примечание: Нет, необходимо явно указать токен устройства.Поскольку FirebaseMessaging использует метод swizzling, он автоматически получит его из метода делегата.

func application(_ application: UIApplication,
                 didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...