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

Popular posts from this blog

Are Regular VACUUM ANALYZE Still Recommended Under 9.1?

Can Feynman Diagrams Be Used To Represent Any Perturbation Theory?