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

Unable to receive fcmOptions field on default firebase handlers #6207

Closed
guiiamorim opened this issue May 3, 2022 · 1 comment · Fixed by #6327
Closed

Unable to receive fcmOptions field on default firebase handlers #6207

guiiamorim opened this issue May 3, 2022 · 1 comment · Fixed by #6327

Comments

@guiiamorim
Copy link

[REQUIRED] Describe your environment

  • Operating System version: Windows 11 Pro 21H2
  • Browser version: Chrome 101.0.4951.54 and Firefox 101.0.4951.54
  • Firebase SDK version: 9.7.0
  • Firebase Product: messaging (auth, database, storage, etc)

[REQUIRED] Describe the problem

I'm using the firebase messaging to show notifications on my web app. This notifications often come with a link to a page on my app to the user to follow, but, using the onMessage and the onBackgroundMessage methods, the fcm_options doesn't show on the payload. The only way I managed to retrieve the link is by either using my own event listener to get the link, and even then, the link is not where it was supposed to be. I send the property correctly under the webpush.fcm_options.link, but on the browser it appears on notification.click_action, which I assumed was deprecated.

Steps to reproduce:

Just follow the quick guide instructions and the results will be the same

Relevant Code:

importScripts(
    'https://www.gstatic.com/firebasejs/9.7.0/firebase-app-compat.js',
    'https://www.gstatic.com/firebasejs/9.7.0/firebase-messaging-compat.js'
);

const firebaseConfig = {
    apiKey: "********",
    authDomain: "********",
    projectId: "********",
    storageBucket: "********",
    messagingSenderId: "**********",
    appId: "**********",
    measurementId: "*********"
};


firebase.initializeApp(firebaseConfig);

const messaging = firebase.messaging();

messaging.onBackgroundMessage(payload => {
    console.log(payload)
    self.registration.showNotification(payload.notification.title, payload.notification);
})

For me to get the the link on the background message, I had to make my own eventhandler on the notificationclick event

self.addEventListener('notificationclick', evt => {
    const url = evt.notification?.data?.FCM_MSG?.notification?.click_action \\ Note that the link is actualy being sent on the click_action property of the notification
    console.log(url)

    if (url)
        self.clients
            .openWindow(url)
            .then((windowClient) =>
                windowClient ? windowClient.focus() : null
            )
})

So, there is a way I can retrieve the fcm_options on the default methods? I really don't want to rewrite all the logic that this awesome library does for me out of the box.

@zwu52
Copy link
Member

zwu52 commented May 25, 2022

looked into this. The issue is this: currently when v1 send, message.webpush.fcmOpions.link is packaged into notification.click_action

routed to our backend folks for a fix

@firebase firebase locked and limited conversation to collaborators Jul 4, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
4 participants