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