https://github.com/matthieulemoine/push-receiver
A library to subscribe to GCM/FCM and receive notifications within a node process.
https://github.com/matthieulemoine/push-receiver
fcm firebase-cloud-messaging notifications push-notifications webpush
Last synced: 6 months ago
JSON representation
A library to subscribe to GCM/FCM and receive notifications within a node process.
- Host: GitHub
- URL: https://github.com/matthieulemoine/push-receiver
- Owner: MatthieuLemoine
- License: mit
- Created: 2017-08-30T20:49:11.000Z (about 8 years ago)
- Default Branch: master
- Last Pushed: 2024-08-08T15:11:24.000Z (about 1 year ago)
- Last Synced: 2025-04-03T15:08:36.315Z (6 months ago)
- Topics: fcm, firebase-cloud-messaging, notifications, push-notifications, webpush
- Language: JavaScript
- Homepage: https://medium.com/@MatthieuLemoine/my-journey-to-bring-web-push-support-to-node-and-electron-ce70eea1c0b0
- Size: 152 KB
- Stars: 207
- Watchers: 18
- Forks: 82
- Open Issues: 38
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# push-receiver
A library to subscribe to GCM/FCM and receive notifications within a node process.
For [Electron](https://github.com/electron/electron), you can use [electron-push-receiver](https://github.com/MatthieuLemoine/electron-push-receiver) instead which provides a convenient wrapper.
See [this blog post](https://medium.com/@MatthieuLemoine/my-journey-to-bring-web-push-support-to-node-and-electron-ce70eea1c0b0) for more details.
## When should I use `push-receiver` ?
- I want to **receive** push notifications sent using Firebase Cloud Messaging in an [electron](https://github.com/electron/electron) desktop application.
- I want to communicate with a node process/server using Firebase Cloud Messaging infrastructure.## When should I not use `push-receiver` ?
- I want to **send** push notifications (use the firebase SDK instead)
- My application is running on a FCM supported platform (Android, iOS, Web).## Install
`
npm i -S push-receiver
`## Requirements
- Node v8 (async/await support)
- Firebase sender id to receive notification
- Firebase serverKey to send notification (optional)## Usage
### Electron
You can use [electron-push-receiver](https://github.com/MatthieuLemoine/electron-push-receiver) instead which provides a convenient wrapper.
### Node
```javascript
const { register, listen } = require('push-receiver');// First time
// Register to GCM and FCM
const credentials = await register(senderId); // You should call register only once and then store the credentials somewhere
storeCredentials(credentials) // Store credentials to use it later
const fcmToken = credentials.fcm.token; // Token to use to send notifications
sendTokenToBackendOrWhatever(fcmToken);// Next times
const credentials = getSavedCredentials() // get your saved credentials from somewhere (file, db, etc...)
// persistentIds is the list of notification ids received to avoid receiving all already received notifications on start.
const persistentIds = getPersistentIds() || [] // get all previous persistentIds from somewhere (file, db, etc...)
await listen({ ...credentials, persistentIds}, onNotification);// Called on new notification
function onNotification({ notification, persistentId }) {
// Update list of persistentId in file/db/...
updatePersistentIds([...persistentIds, persistentId]);
// Do someting with the notification
display(notification)
}
```### Test notification
To test, you can use the [send script](scripts/send/index.js) provided in this repo, you need to pass your serverKey and the FCM token as arguments :
```
node scripts/send --serverKey="" --token=""
```