web-dev-qa-db-fra.com

Changer / mettre à jour le jeton de notification Firebase ou l'ID d'instance avec force via le code?

Que dois-je faire pour changer ou demander le jeton dans Firebase? le jeton unique généré par firebase sur la base des informations de l'appareil.

13
PRAVEEN

Maintenant, j'ai obtenu ma réponse après avoir rencontré de nombreux problèmes pour générer un nouveau jeton de changement de base de feu pour la notification Push.

1) Supprimer l'ancien jeton Firebase

let instance = FIRInstanceID.instanceID()
_ = FIRInstanceID.delete(instance)
FIRInstanceID.instanceID().delete { (err:Error?) in
    if err != nil{
        print(err.debugDescription);
    } else {
        print("Token Deleted");
    }
}

2) Demander un nouveau jeton Firebase

if let token = FIRInstanceID.instanceID().token() {
    print("Token \(token) fetched");
} else {
    print("Unable to fetch token");
}

FIRMessaging.messaging().connect { (error) in
    if (error != nil) {
        print("Error connecting to FCM. \(error.debugDescription)")
    } else {
        print("Connected to FCM.")
    }
}

MISE À JOUR POUR Swift 4 & Firebase 4.8.2 (Suivez deux étapes simples) ????????

1) Supprimer l'ancien jeton

let instance = InstanceID.instanceID()
instance.deleteID { (error) in
    print(error.debugDescription)
}

2) Demande de nouveau token

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

Messaging.messaging().shouldEstablishDirectChannel = true

Vous pouvez obtenir un jeton mis à jour dans la méthode MessagingDelegate didReceiveRegistrationToken et dans Refresh Token.

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase Token :  \(fcmToken)")
}
12
PRAVEEN

pour l'instant InstanceID.instanceID().token() est obsolète.

Vous devez utiliser ceci:

let instance = InstanceID.instanceID()
instance.deleteID { (error) in
  print(error.debugDescription)
}

instance.instanceID { (result, error) in
  if let error = error {
    print("Error fetching remote instange ID: \(error)")
  } else {
    print("Remote instance ID token: \(String(describing: result?.token))")
  }
}
Messaging.messaging().shouldEstablishDirectChannel = true

Puis dans AppDelegate:

extension AppDelegate: MessagingDelegate {

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    //Here is your new FCM token
    print("Registered with FCM with token:", fcmToken)
}
2
Alex Kolovatov

Réponse mise à jour pour Swift 4, FireBase 4.8.2, FirebaseMessaging (2.0.8)

debugPrint("Existing Token :- \(Messaging.messaging().fcmToken!)")

let instance = InstanceID.instanceID()
instance.deleteID { (error) in
    print(error.debugDescription)
}

if let token = InstanceID.instanceID().token() {
    print("Token \(token) fetched");
} else {
    print("Unable to fetch token");
}
Messaging.messaging().shouldEstablishDirectChannel = true

Nous recevons ce jeton mis à jour dans la méthode MessagingDelegate ainsi que dans le jeton d'actualisation

func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
    print("Firebase registration token: \(fcmToken)")
}
2
Jitendra

Je comprends que vous souhaitez modifier ou mettre à jour le jeton Firebase.

Créez les deux méthodes suivantes

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)
        }
    }
}

Appeler le

unregisterFirebaseToken (:)

et dans le contrôle de fermeture si vrai, appelez

registerFirebaseToken ()

cela échouera pour la première fois et l'une des méthodes déléguées sera appelée, c'est-à-dire.

extension AppDelegate: MessagingDelegate {
    func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
        registerFirebaseToken()
    }
}

Cette fois

registerFirebaseToken ()

sera à nouveau appelé à partir de la méthode déléguée et vous obtiendrez un nouveau jeton.

0
Anirudha Mahale