wake-up-neo.com

Firebase-Benachrichtigungstoken oder Instanz-ID zwangsweise über Code ändern/aktualisieren?

Was soll ich tun, um das Token in der Firebase zu ändern oder anzufordern? das eindeutige Token, das von firebase auf der Grundlage von Geräteinformationen generiert wird.

7
PRAVEEN

Jetzt habe ich meine Antwort erhalten, nachdem ich viele Probleme damit hatte, ein neues Token für die Push-Benachrichtigung zu generieren oder das Token der Firebase zu ändern.

1) Löschen Sie das alte Firebase-Token

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

2) Fordern Sie ein neues Firebase-Token an

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

UPDATE FÜR Swift 4 & Firebase 4.8.2 (Befolgen Sie einfach zwei Schritte) ????????

1) Lösche altes Token

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

2) Anforderung eines neuen Tokens

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

Messaging.messaging().shouldEstablishDirectChannel = true

Sie können das aktualisierte Token in der MessagingDelegate-Methode didReceiveRegistrationToken und im Refresh Token abrufen.

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

Aktualisierte Antwort für 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

Wir erhalten dieses aktualisierte Token sowohl in der MessagingDelegate-Methode als auch im Refresh Token

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

Ich verstehe, dass Sie das Firebase-Token ändern oder aktualisieren möchten.

Erstellen Sie die folgenden zwei Methoden

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

Ruf den

unregisterFirebaseToken (:)

und in der Schließung prüfen, ob wahr, dann anrufen

registerFirebaseToken ()

dies wird zum ersten Mal fehlschlagen und eine der Delegate-Methoden wird aufgerufen, d.h.

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

Diesmal

registerFirebaseToken ()

wird von der Delegate-Methode erneut aufgerufen und Sie erhalten ein neues Token.

1
Anirudha Mahale

im Moment ist InstanceID.instanceID().token() veraltet.

Sie sollten dies verwenden:

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

Dann in AppDelegate:

extension AppDelegate: MessagingDelegate {

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