Co powinienem zrobić, aby zmienić lub poprosić o token w bazie firewall? unikalny token generowany przez firebase na podstawie informacji o urządzeniu.Zmieniaj/aktualizuj token powiadomień Firebase lub identyfikator instancji przy użyciu kodu?
Odpowiedz
Teraz otrzymałem odpowiedź po napotkaniu wielu problemów związanych z generowaniem nowego lub modyfikowania tokena dla powiadomienia push.
1) Usuń stary Firebase żeton
let instance = FIRInstanceID.instanceID()
_ = FIRInstanceID.delete(instance)
FIRInstanceID.instanceID().delete { (err:Error?) in
if err != nil{
print(err.debugDescription);
} else {
print("Token Deleted");
}
}
2) Poproś o nowe Firebase żeton
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.")
}
}
Rozumiem, że chcesz zmienić lub zaktualizować Firebase token.
utworzyć następujące dwie metody
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)
}
}
}
zadzwonić do
unregisterFirebaseToken (:)
i kontroli zamknięcia jeśli jest prawdziwa wtedy zadzwonić
registerFi rebaseToken()
to zawiedzie po raz pierwszy i jeden z metody delegata zostanie wywołana tj
extension AppDelegate: MessagingDelegate {
func messaging(_ messaging: Messaging, didRefreshRegistrationToken fcmToken: String) {
registerFirebaseToken()
}
}
Tym razem
registerFirebaseToken()
zostanie wywołany ponownie z metody delegatów, a otrzymasz nowy token.
Updated odpowiedzi na 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
Otrzymujemy Ta zaktualizowana token w sposób MessagingDelegate jak również token odświeżania
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) {
print("Firebase registration token: \(fcmToken)")
}
To "messaging(). Connect" jest potrzebne do odnowienia tokena? –
tak, ponieważ nie ma sposobu na odnowienie tokena, najpierw musimy usunąć token i po tym żądaniu nowego tokena, więc "messaging(). Connect" wymagane. jeśli znajdziesz inny sposób, sugestie są zawsze mile widziane. – PRAVEEN
To "usuń" nie jest już używane, musimy użyć wartości logicznej "shouldEstablishDirectChannel" i nie odświeżamy tokena, zachowujemy to samo. Kiedy ja to rozwiążę, tutaj zamieszczę. Dzięki! –