Receive a Firebase notifications in your Electron app
MIT License
Receive Firebase push notifications in your Electron app.
npm i firebase-electron
Usage is similar to the electron-push-receiver
package.
main.js/.ts
)import { setup: setupPushReceiver } from 'firebase-electron';
// Call it before 'did-finish-load' with mainWindow a reference to your window
setupPushReceiver(mainWindow.webContents);
renderer.js/.ts
)import { ipcRenderer } from 'electron';
import {
START_NOTIFICATION_SERVICE,
NOTIFICATION_SERVICE_STARTED,
NOTIFICATION_SERVICE_ERROR,
NOTIFICATION_RECEIVED,
TOKEN_UPDATED,
} from 'firebase-electron/dist/electron/consts';
// Listen for service successfully started
ipcRenderer.on(NOTIFICATION_SERVICE_STARTED, (_, token) => {
// do something
});
// Handle notification errors
ipcRenderer.on(NOTIFICATION_SERVICE_ERROR, (_, error) => {
// do something
});
// Send FCM token to backend
ipcRenderer.on(TOKEN_UPDATED, (_, token) => {
// Send token
});
// Display notification
ipcRenderer.on(NOTIFICATION_RECEIVED, (_, notification) => {
// display notification
});
// Start service
ipcRenderer.send(START_NOTIFICATION_SERVICE, { appId, apiKey, projectId, vapidKey });
// or
window.ipc.send(START_NOTIFICATION_SERVICE, { appId, apiKey, projectId, vapidKey });
appId
, apiKey
, projectId
and vapidKey
Project Settings
cog iconProject Settings
General
tabYour apps
sectionAdd app
Web
Register
appId
, apiKey
, projectId
listed under the SDK setup and configuration
sectionvapidKey
listed under the Cloud Messaging
tab and Web Configuration > Web Push certificates
sectionkey pair
and use the value in the Key pair
column as your vapidKey
electron-push-receiver
electron-push-receiver
library stopped working because it depends on the Legacy FCM API which was deprecated on June 21st, 2024 by Google.
This package is a fork of the electron-push-receiver
package that has been updated to work with the new Firebase Cloud Messaging (FCM) protocol.
I'm giving all credits to Matthieu Lemoine for the initial work and all the contributors for the electron-push-receiver
package. I only updated the package to work with the new FCM protocol.
request-promise
, electron-config
)[!CAUTION] Breaking changes - Instead of providing just a
senderId
, you now must provideappId
,apiKey
,projectId
and optionally avapidKey
. See the updated usage example.Google deprecated https://fcm.googleapis.com/fcm/connect/subscribe (/send too), which is slated for full removal on June 22, 2024. (Source: https://firebase.google.com/docs/cloud-messaging/migrate-v1)
.nvmrc
file)npm install
.env.template
to .env
and fill in the required fieldsnpm run test