@kindly/push-notify
v1.0.7
Published
`push-notify` is a Node.js library written in TypeScript that simplifies the process of sending push notifications to iOS, Android, and Web devices. This library leverages Firebase, APNs, and Web Push protocols to deliver notifications efficiently.
Downloads
85
Keywords
Readme
push-notify
push-notify
is a Node.js library written in TypeScript that simplifies the process of sending push notifications to iOS, Android, and Web devices. This library leverages Firebase, APNs, and Web Push protocols to deliver notifications efficiently.
Table of Contents
Installation
To install push-notify
, use npm or yarn:
npm install push-notify
or using yarn
yarn add push-notify
Usage
Initialization
To initialize the push-notify
library, you need to provide configurations for iOS, Android, and Web push notifications. Here is an example of how to initialize the library:
import * as ns from 'push-notify';
const keyId: string = 'YOUR_KEY_ID';
const teamId: string = 'YOUR_TEAM_ID';
const bundleId: string = 'YOUR_BUNDLE_ID';
const isProd: boolean = false;
const p8KeyPath: string | undefined = 'path/to/AuthKey.p8';
const p8KeyContent: string | undefined = undefined;
const pemFilePath: string | undefined = 'path/to/AuthKey.pem';
const pemFileContent: string | undefined = undefined;
const apnsPriority: number = 10;
const apnsExpiration: number = 0;
let instance = ns.initialize({
apnsConfig: {
keyId: keyId,
teamId: teamId,
bundleId: bundleId,
isProd: isProd,
p8KeyPath: p8KeyPath,
p8KeyContent: p8KeyContent,
pemFilePath: pemFilePath,
pemFileContent: pemFileContent,
apnsPriority: apnsPriority,
apnsExpiration: apnsExpiration,
},
androidConfig: {
name: 'Android',
jsonCredentialsPath: 'path/to/android/credentials.json',
jsonCredentialsContent: undefined
},
webConfig: {
name: 'Web',
jsonCredentialsPath: 'path/to/web/credentials.json',
jsonCredentialsContent: undefined
}
});
Sending Notifications
Once the library is initialized, you can send notifications to iOS, Android, and Web devices. Here is an example:
const deviceToken: string = 'YOUR_DEVICE_TOKEN';
const notificationPayload = {
title: 'Test title',
body: 'Test body',
sound: 'default',
priority: Priority.HIGH,
data: {
'test': 'test'
}
};
instance.sendNotification(deviceToken, notificationPayload)
.then(response => {
console.log(response);
})
.catch(error => {
console.log(error);
});
API
initialize
Initializes the push notification service with the given configurations.
Parameters:
config
: An object containing the APNs, Android, and Web configurations.
sendNotification
Sends a push notification to the specified device.
Parameters:
deviceToken
: The token of the device to send the notification to.payload
: The notification payload.
Returns:
- A promise that resolves with the response from the push notification service.
Examples
Minimal Example Using Singleton
import * as ns from 'push-notify';
ns.initialize({
apnsConfig: { /* ... */ },
androidConfig: { /* ... */ },
webConfig: { /* ... */ }
});
const deviceToken: string = 'YOUR_DEVICE_TOKEN';
const notificationPayload = {
title: 'Hello World',
body: 'This is a test notification.'
};
ns.sendNotification(deviceToken, notificationPayload)
.then(response => {
console.log('Notification sent successfully:', response);
})
.catch(error => {
console.error('Error sending notification:', error);
});
Multiple Instances
import * as ns from 'push-notify';
const instance1 = ns.initialize({
apnsConfig: { /* ... */ },
androidConfig: { /* ... */ },
webConfig: { /* ... */ }
});
const instance2 = ns.initialize({
apnsConfig: { /* ... */ },
androidConfig: { /* ... */ },
webConfig: { /* ... */ }
});
const deviceToken1: string = 'DEVICE_TOKEN_1';
const deviceToken2: string = 'DEVICE_TOKEN_2';
instance1.sendNotification(deviceToken1, { title: 'Title 1', body: 'Body 1' });
instance2.sendNotification(deviceToken2, { title: 'Title 2', body: 'Body 2' });
Contributing
Contributions are welcome! Please open an issue or submit a pull request.
License
This project is licensed under the ISC License.