Уведомление Firebase не работает при отправке уведомления с сервера в swift 4? - PullRequest
0 голосов
/ 26 сентября 2018

Я создаю push-уведомление для своего проекта в swift 4. На моем iphone отображается push-сообщение с консоли firebase, но сообщение, отправленное со стороны сервера, не доставляется на iphone.Мне нужно отправить fcm_token на сервер при входе в систему.Мой код:

AppDelegate

import UIKit
import CoreData
import CoreLocation
import FBSDKCoreKit
import FBSDKLoginKit
import UserNotifications
import Firebase
import FirebaseInstanceID
import FirebaseMessaging

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, UNUserNotificationCenterDelegate, MessagingDelegate {

  var window: UIWindow?
  var locationManager: CLLocationManager!
  var notificationCenter: UNUserNotificationCenter!

  func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    // Override point for customization after application launch.

    self.locationManager = CLLocationManager()
    self.locationManager!.delegate = self

    // get the singleton object
    self.notificationCenter = UNUserNotificationCenter.current()

    // register as it's delegate
    notificationCenter.delegate = self

    // define what do you need permission to use
    let options: UNAuthorizationOptions = [.alert, .sound]

    // request permission
    notificationCenter.requestAuthorization(options: options) { (granted, error) in
      if !granted {
        print("Permission not granted")
      }
    }

    if launchOptions?[UIApplicationLaunchOptionsKey.location] != nil {
      print("I woke up thanks to geofencing")
    }

    // Messaging.messaging().delegate = self

    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 })
      // For iOS 10 data message (sent via FCM
      Messaging.messaging().delegate = self
    } else {
      let settings: UIUserNotificationSettings =
        UIUserNotificationSettings(types: [.alert, .badge, .sound], categories: nil)
      application.registerUserNotificationSettings(settings)
    }
    application.registerForRemoteNotifications()
    FirebaseApp.configure()
    return true
  }

  func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

    InstanceID.instanceID().instanceID { (result, error) in
      if let error = error {
        print("Error fetching remote instange ID: \(error)")
      } else if let result = result {
        print("Remote instance ID token: \(result.token)")

        UserDefaults.standard.set(result.token, forKey: "FCM_Token")
        UserDefaults.standard.synchronize()
      }
    }
    }

И я загрузил сертификаты p12 в консоль Firebase.Нужно ли бэкэнд-разработчику устанавливать сертификаты pem на сервер, когда push-уведомления отправляются через сервер?

...