Push-уведомление FCM не работает UserNotificationCenter? - PullRequest
0 голосов
/ 02 сентября 2018

Я должен создать свой проект тестового уведомления и использовать в нем фреймворк Firebase. У меня есть одна проблема, и я знаю об этом, но я не могу это исправить, и я так растерялся !!! так как я отправил уведомление с сервера на приложение, мой проект вызвал этот метод:

func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
        print("NOTY")
        print("Received data message: \(remoteMessage.appData)")
        print("Received Remote Message: 2\nCheck Out:\n")
    }

этот метод не работает в фоновом режиме !!! Теперь, так как я отправил уведомление из консоли Firebase в приложение, мой проект называл этот метод:

  public func userNotificationCenter(_ center: UNUserNotificationCenter,
                              willPresent notification: UNNotification,
                              withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
    let userInfo = notification.request.content.userInfo
    print("NOTY5")
    debugPrint(userInfo)
      if let page = userInfo["page"] as? String {
        if page == "finish_tr" {

        }else if page == "one_page" {

        }else if page == "payment" {

        }
      }
    completionHandler([.alert, .badge, .sound])

этот метод отображает мне уведомления и работает в фоновом режиме: D

Теперь моя проблема здесь !!! почему в первом состоянии didReceive remoteMessage должен вызываться, но во втором состоянии должен вызываться userNotificationCenter !!! Это может зависеть от полезной нагрузки ???

моя полезная нагрузка при отправке с сервера:

{

    "priority":"high",
    "registration_ids":[
        ""
    ],
    "data":{
        "page":"all_tender",
        "body":"test body",
        "tr_id":null,
        "timestamp":1535879143,
        "title":"title test"
    },
    "aps":{
        "page":"all_tender",
        "body":"test body",
        "tr_id":null,
        "timestamp":1535879143,
        "title":"test title"
    }

} 

теперь, когда я сделал два состояния, получаю эти журналы:

Я получаю этот отпечаток в первом состоянии:

[AnyHashable("from"): 1078335662056, AnyHashable("page"): all_tender, AnyHashable("title"): test title, AnyHashable("timestamp"): 1535883883, AnyHashable("body"): test body]

Но я получаю этот отпечаток во втором состоянии (уведомление о тестировании Firebase):

[AnyHashable("dsf"): dsf, AnyHashable("google.c.a.c_l"): sadf, AnyHashable("google.c.a.e"): 1, AnyHashable("google.c.a.ts"): 1535884249, AnyHashable("google.c.a.udt"): 0, AnyHashable("gcm.n.e"): 1, AnyHashable("aps"): {
    alert =     {
        body = aaaaaa;
        title = bbbbb;
    };
}, AnyHashable("google.c.a.c_id"): 8610540651637958517, AnyHashable("gcm.message_id"): 0:1535884249651346%024f9630024f9630]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...