Swift Firebase iOS didReceiveRemoteNotification никогда не вызывает - PullRequest
0 голосов
/ 21 января 2020

Я использую Firebase в своем приложении iOS и Azure Центр уведомлений на сервере для отправки уведомлений. Я сделал все необходимое, как в этой и этой статьях. Вот мой код AppDelegate.swift:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    if #available(iOS 10.0, *) {
      // For iOS 10 display notification (sent via APNS)
      UNUserNotificationCenter.current().delegate = self

      let authOptions: UNAuthorizationOptions = [.alert, .badge, .sound]
      UNUserNotificationCenter.current().requestAuthorization(
        options: authOptions,
        completionHandler: {_, _ in })
    } else {
      let settings: UIUserNotificationSettings =
      UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
      application.registerUserNotificationSettings(settings)
    }

    application.registerForRemoteNotifications()

    FirebaseApp.configure()
    Messaging.messaging().delegate = self

    return true
}

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

InstanceID.instanceID().instanceID { (result, error) in
      if let error = error {
        print("Error fetching remote instance ID: \(error)")
      } else if let result = result {
        let appGuid = KeychainService.loadAppGuid()
        let type = "apns"
        var str = "native.initClient('" + appGuid!
        str += "',  '" + AppName
        str += "', '\(type)', "
        str += "'\(result.token )'"
        str += ", '" + HUBNAME + "')"
        print(str)
        self.webViewController.callJavaScript(command: str)
      }
    }

А вот как я пытаюсь получить уведомление в моем AppDelegate.swift:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any]) {
  let gcmMessageIDKey = "gcm.message_id"
  if let messageID = userInfo[gcmMessageIDKey] {
    print("Message ID: \(messageID)")
  }
  print(userInfo)
}

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable: Any],
                 fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
  let gcmMessageIDKey = "gcm.message_id"
  if let messageID = userInfo[gcmMessageIDKey] {
    print("Message ID: \(messageID)")
  }
  print(userInfo)
  completionHandler(UIBackgroundFetchResult.newData)
}

Но ни один из этих методов называются. Pu sh сертификаты уведомлений, идентификаторы и профили являются правильными и действительными. Я запускаю этот код на Xcode Simulator. Почему это не работает?

1 Ответ

1 голос
/ 21 января 2020

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...