Обновленный токен fcm для отправки на сервер через ios - PullRequest
1 голос
/ 12 июля 2020

У меня есть уведомление pu sh, которое нужно отправить из firebase. Когда пользователь регистрируется в приложении, токен устройства fcm сохраняется в базе данных. Код в делегате приложения выглядит следующим образом:

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
           
             FirebaseApp.configure()
            
            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()
          
            Messaging.messaging().delegate = self
             let token = Messaging.messaging().fcmToken
              print("FCM token: \(token ?? "")")
return true
    }
 func applicationDidBecomeActive(_ application: UIApplication) {
        print("application is active")
    }
    
 
  func application(
        _ application: UIApplication,
        didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data
    ) {
        
        let tokenParts = deviceToken.map { data in String(format: "%02.2hhx", data) }
        let token = tokenParts.joined()
        print("Device Token aaaa: \(token)")
        
        Messaging.messaging().apnsToken = deviceToken
        
        InstanceID.instanceID().instanceID { (result, error) in
            if let error = error {
                print("Error fetching remote instance ID: \(error)")
            } else if let result = result {
                print("Remote instance ID token: \(result.token)")
            }
        }
        }

   func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
            print("Firebase registration token didreceieve: \(fcmToken)")
            
            UserDefaults.standard.set(fcmToken, forKey: "fcmToken")
            let dataDict:[String: String] = ["token": fcmToken]
            NotificationCenter.default.post(name: Notification.Name("FCMToken"), object: nil, userInfo: dataDict)
    
        }

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

...