Failed to fetch default token Error Domain=com.firebase.iid Code=2006 “(null)”

i had this issue when trying to get the FCMtoken for the second time, when the user accepts the permissions to push notifications he can log into the app properly, but if decide to unregister from the app, he cannot complete the path again, because he cannot get another FCMtoken

i already tryed deleting the firebaseApp and get another FirebaseToken


//
                if let token = InstanceID.instanceID().token() {
                    print("Token : \(token)");
                    UserSingleton.getInstance().pushToken = token
                } else {
                    print("Error: unable to fetch token");
                }

                Messaging.messaging().shouldEstablishDirectChannel = true

                print("new token: \(UserSingleton.getInstance().pushToken)")
                self.dismiss(animated: true, completion: nil)
                //
            }

        }

        func registerFirebaseToken() {
            if let token = InstanceID.instanceID().token() {
                print("FIREBASE: Token \(token) fetched")
            } else {
                print("FIREBASE: Unable to fetch token");
            }

            Messaging.messaging().shouldEstablishDirectChannel = true
        }

        func unregisterFirebaseToken(completion: @escaping (Bool)->()) {
            // Delete the Firebase instance ID
            InstanceID.instanceID().deleteID { (error) in
                if error != nil{
                    print("FIREBASE: ", error.debugDescription);
                    completion(false)
                } else {
                    print("FIREBASE: Token Deleted");
                    completion(true)
                }
            }



when the user unregister from the app this code runs and gives this :


5.17.0 - [Firebase/InstanceID][I-IID003009] Failed to fetch default token Error Domain=com.firebase.iid Code=2006 "(null)"

this is my FirebaseToken Class:

import Foundation
import Firebase
import UserNotifications
import FirebaseInstanceID
import FirebaseMessaging

@objc protocol CallbackToken {
    func onGetToken(token: String)
}

class FirebaseToken: UIResponder {

    let gcmMessageIDKey = "gcm.message_id"
    let preferences = UserDefaults.standard
    var appName = ""
    var isFistFireConfigured = false

    var delegate: CallbackToken?

    func getIdN(_ application: UIApplication, callbackToken:CallbackToken, cGoogleID: String) {
        delegate = callbackToken

        if #available(iOS 10.0, *) {
            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()

        self.configureApp(googleID: cGoogleID, iOSID: Constants.iOSID, app: Constants.appName)

        Messaging.messaging().delegate = self
    }

    func configureApp(googleID: String, iOSID: String, app: String) {
        appName = app
        let fireOptions = FirebaseOptions(googleAppID: String(format: "1:%@:ios:%@", googleID, iOSID), gcmSenderID: googleID)
        NSLog("FIREBASE APP ID -> %@", fireOptions)

        NSLog("CONFIGURED APP %@ -> %@", appName, fireOptions)

        let app = FirebaseApp.app()
        app?.delete({ (true) in
            NSLog("Firebase app deleted")
        })
        FirebaseApp.configure(options: fireOptions)
    }


}

extension FirebaseToken: UNUserNotificationCenterDelegate {

    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {

        let userInfo = notification.request.content.userInfo
        if userInfo[gcmMessageIDKey] != nil {
            NSLog("MESSAGE ID -> %@", self)
        }

        NSLog("USER INFO -> %@", userInfo)
        completionHandler([.alert, .badge, .sound])
    }

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

        let userInfo = response.notification.request.content.userInfo

        if let messageID = userInfo[gcmMessageIDKey] {
            print("\n4. Message ID: \(messageID)")
        }



        if UIApplication.shared.applicationState == .active {
            print("Usuario apretó la push cuando la app está activa AppDelegate")
            print("esto es el mensaje: \(response)")
            if UserSingleton.getInstance().pushNoti != [:] {
                if UserDefaults.standard.bool(forKey: "isLogged") == true {
                    UserDefaults.standard.set(true, forKey: "noPresencialForeground")
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "noPresencial"), object: nil)


                } else {
                    UserDefaults.standard.set(true, forKey: "noPresencialForeground")
                }
            }

            else {
                print("Solo abre la app")
            }
        } else if UIApplication.shared.applicationState == .inactive {
            print("Usuario apretó la push cuando la app está INACTIVA AppDelegate")
            if UserSingleton.getInstance().pushNoti != [:] {
                if UserDefaults.standard.bool(forKey: "isLogged") == true {
                    UserDefaults.standard.set(true, forKey: "noPresencialForeground")
                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "noPresencial"), object: nil)

                }

                else {
                    UserDefaults.standard.set(true, forKey: "noPresencialForeground")
                }
            } else {
                print("Solo abre la app")
            }
        }
        completionHandler()
    }

}

extension FirebaseToken: MessagingDelegate {


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

        print("Firebase registration token: \(fcmToken)")



        UserSingleton.getInstance().pushToken = fcmToken

        isFistFireConfigured = true

        preferences.set(fcmToken, forKey: appName)

        delegate?.onGetToken(token: fcmToken)

        let didSave = preferences.synchronize()
        if !didSave {
            print("Error al sincronizar las preferencias")
        }

        if isFistFireConfigured {
            configureApp(googleID: Constants.googleIDCobroSPEI, iOSID: Constants.iOSID, app: Constants.appNameCobroSPEI)
            isFistFireConfigured = false
        }
    }

    func messaging(_ messaging: Messaging, didReceive remoteMessage: MessagingRemoteMessage) {
        print("\nMensaje de datos recibido en primer plano: \(remoteMessage.appData)")
    }
}