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

i dont want to show message onbackground because crashing with hundreds notification. #669

Open
yogithesymbian opened this issue Sep 22, 2022 · 0 comments

Comments

@yogithesymbian
Copy link

i have a problem with a lot of notification that make crash other computer !.
in one day we have more than 120 notification.

i have implemented on vue2.
what i expected is i can listening on new incoming notification that trigger on .vue , now its work .
what i expected is i can disable notification onbackground by browser(chrome/mozila)

my unExpected is my apps or browser still get notification by chrome/mozila browser

i have clear data/cache to get a new service worker or cookies or cache or other.

when i deleted the firebase-messaging-sw.js its cant listening any message, its throw about service worker not found 'because i deleted' then why i deleted it ?

here is description.
my project/public/firebase-messaging-sw.js

// Give the service worker access to Firebase Messaging.
// Note that you can only use Firebase Messaging here. Other Firebase libraries
// are not available in the service worker.
importScripts('https://www.gstatic.com/firebasejs/8.2.5/firebase-app.js')
importScripts('https://www.gstatic.com/firebasejs/8.2.5/firebase-messaging.js')

// Initialize the Firebase app in the service worker by passing in
// your app's Firebase config object.
// https://firebase.google.com/docs/web/setup#config-object
firebase.initializeApp({
  apiKey: 'x',
  authDomain: 'project-x.firebaseapp.com',
  databaseURL: 'https://project-x.firebaseio.com',
  projectId: 'project-x',
  storageBucket: 'project-x.appspot.com',
  messagingSenderId: 'x',
  appId: '1:x:web:x',
  measurementId: 'G-x',
})

let messaging = null
if (firebase.messaging.isSupported()) {
  messaging = firebase.messaging()
  messaging.onBackgroundMessage(payload => {
    console.log(
      '[firebase-messaging-sw.js] Received background message ',
      payload,
    )
    const notificationTitle = payload.notification.title
    const notificationOptions = {
      body: payload.notification.body,
      icon: './logo.png', // This will only work when the webpage is opened. If you always want to show an image you should fetch it via URL.
      vibrate: [200, 100, 200, 100, 200, 100, 200],
      // tag: 'custom-notification',
      badge: './favicon.ico',
      tag: 'tes',
      renotify: true,
      data: {
        url: payload.data['gcm.notification.url'],
      },
    }
    console.log(
      '[firebase-messaging-sw.js] Received background message (disable-by-administrators)',
      notificationOptions,
    )
    console.log('title: ', notificationTitle)
  })
} else {
  console.log(
    '[firebase-messaging-sw.js] doesnt support with this browser',
  )
}

but why i still get notification on background by chrome ??? i didnt put showNotification

i didnt put any code to trigger , what i know ,,, we must put some code look like these to trigger

// Schedule closing all notifications that are not our own.
    // This is necessary because if we don't close the other notifications the
    // default one will appear and we will have duplicate notifications.
    // return new Promise(((resolve, reject) => {
    //   resolve()
    //   setTimeout(() => {
    //     self.registration.getNotifications().then(notifications => {
    //       notifications.forEach(notification => {
    //         if (notification.tag !== 'landline-monitoring') {
    //           notification.close()
    //         }
    //       })
    //     })
    //   }, 30)
    // }))

or

// setTimeout(() => {
    // self.registration.showNotification(
    //   notificationTitle,
    //   notificationOptions,
    // )
    // }, 30)

or

// self.addEventListener('notificationclick', event => {
  //   event.notification.close()
  //   const promise = new Promise((resolve => {
  //     setTimeout(resolve, 500)
  //   })).then(() => clients.openWindow(event.notification.data))
  //   event.waitUntil(promise)
  // })
  self.addEventListener('notificationclick', event => {
    const { url } = event.notification.data
    event.notification.close() // Android needs explicit close.
    event.waitUntil(
      clients.matchAll({ type: 'window' }).then(windowClients => {
        // Check if there is already a window/tab open with the target URL
        for (let i = 0; i < windowClients.length; i++) {
          const client = windowClients[i]
          // If so, just focus it.
          if (client.url === url && 'focus' in client) {
            client.postMessage('reload')
            return client.focus()
          }
        }
        // If not, then open the target URL in a new window/tab.
        if (clients.openWindow) {
          return clients.openWindow(url)
        }
      }),
    )
  })
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant