Library in typescript for sending multicast notifications using HTTP/2 multiplexing and the FCM HTTP v1 API.
Features supported by fcm-http2:
- [X] HTTP/2 session & stream concurrency
- [X] Token batching support
- [X] Uninstall detection
- [X] Retry mechanism
Use package manager npm to install fcm-http2.
npm install fcm-http2
Once the library has been installed you can start using it in this way.
Default:
// FCM library recovery
import { FCM } from 'src/lib/fcm';
// Init FCM with default options
// NOTE: Put the service-account.json file in the package's lib directory
const fcmClient = new FCM();
Option with file:
// FCM library recovery
import { FCM } from 'src/lib/fcm';
import { FcmBaseOptions } from 'src/entity/fcm-base-options';
// Basic configuration for FCM
const fcmOptions: FcmBaseOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
serviceAccount: require('./service-account.json'),
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);
Option without file:
// FCM library recovery
import { FCM } from 'src/lib/fcm';
import { FcmBaseOptions } from 'src/entity/fcm-base-options';
// Basic configuration for FCM
const fcmOptions: FcmBaseOptions = {
// Pass in your service account JSON private key file (https://console.firebase.google.com/u/0/project/_/settings/serviceaccounts/adminsdk)
// NOTE: Recover the three parameters from the service-account.json file
serviceAccount: {
project_id: '<project_id>',
private_key: '<private_key>',
client_email: '<client_email>'
},
// Max number of concurrent HTTP/2 sessions (connections)
maxConcurrentConnections: 10,
// Max number of concurrent streams (requests) per session
maxConcurrentStreamsAllowed: 100
};
// Init FCM with options
const fcmClient = new FCM(fcmOptions);
// NOTE: Use the fcmClient object that you created earlier
// Token to send the notification to
const tokens = ['TOKEN_1', 'TOKEN_N'];
// Composing the message to be sent
const message = {
notification: {
title: "Test",
body: "Multiple Send"
},
data: {
notification: "true"
}
};
// Multiple sending of notification using token array
fcmClient.sendMulticast(message, tokens).then(unregisteredTokens => {
// Sending successful
console.log('Message sent successfully');
// Remove unregistered tokens from your database
if (unregisteredTokens.length > 0) {
console.log('Unregistered device token(s): ', unregisteredTokens.join(', '));
}
}).catch(error => console.log(error));
- Node.js >= 12
For any doubts open an issue or contact this email fctaddia@duck.com