Change/update Firebase Notification Token Or Instance Id Forcefully Via Code?
Answer :
Now i got my answer after facing many troubles for generating new or change token of firebase for push notification.
1) Delete old 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) Request new Firebase token
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 FOR SWIFT 4 & Firebase 4.8.2 (Follow simple two steps)
1) Delete old Token
let instance = InstanceID.instanceID() instance.deleteID { (error) in print(error.debugDescription) }
2) Request for new token
if let token = InstanceID.instanceID().token() { print("Token : \(token)"); } else { print(“Error: unable to fetch token"); } Messaging.messaging().shouldEstablishDirectChannel = true
You can get updated token in MessagingDelegate method didReceiveRegistrationToken
and in Refresh Token.
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) { print("Firebase Token : \(fcmToken)") }
for now InstanceID.instanceID().token()
is deprecated.
You should use this:
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
Then 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) }
Updated Answer for 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
We receive this updated token in MessagingDelegate method as well as in Refresh Token
func messaging(_ messaging: Messaging, didReceiveRegistrationToken fcmToken: String) { print("Firebase registration token: \(fcmToken)") }
Comments
Post a Comment