Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FCM: Sending notifications to old tokens on web platform #2822

Open
adonisRodxander opened this issue Dec 27, 2024 · 1 comment
Open

FCM: Sending notifications to old tokens on web platform #2822

adonisRodxander opened this issue Dec 27, 2024 · 1 comment

Comments

@adonisRodxander
Copy link

I’m using Flutter in my client app to handle notifications. I retrieve the token from the device, and for testing purposes, I’ve created a Firebase Cloud Function that accepts the token and sends a test notification to the browser. The function is as follows:

exports.sendNotification = functions.https.onRequest(async (_, response) => {
  const message = {
    notification: {
      title: 'Title',
      body: 'Body',
    },
    token: 'token',
  };

  try {
    await admin.messaging().send(message);
    response.status(200).send('Notification sent successfully');
  } catch (error) {
    console.error('Error sending notification:', error);
    // Delete token for user if error code is UNREGISTERED or INVALID_ARGUMENT.
    if (error.code == "messaging/registration-token-not-registered") {
      // If you're running your own server, call API to delete the
      // token for the user
      console.log('Token is no longer valid: ', message.token);
    }
    response.status(500).send('Error sending notification: ' + error);
  }
});

This function is running in the Firebase emulator.

Workflow:

  1. Run the web application and retrieve the notification token.
  2. Call the sendNotification function using the token, and everything works as expected—the notification is successfully sent to the browser.
  3. Close my Flutter app and reopen it, generating a new token.
  4. Attempt to send a notification using the old token.

Observed Behavior:

  • On the web, the notifications are still sent successfully with the old token, even after the app is reopened and the token changes.
  • On Android, using an old token correctly triggers the messaging/registration-token-not-registered error code, and the function logs that the token is no longer valid.

Shouldn't the behavior be consistent across web and Android? Is there a specific reason why notifications are still being sent to old tokens on the web platform?

@google-oss-bot
Copy link

I found a few problems with this issue:

  • I couldn't figure out how to label this issue, so I've labeled it for a human to triage. Hang tight.
  • This issue does not seem to follow the issue template. Make sure you provide all the required information.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants