# @universal-packages/push-notifications

> Push notifications back end sender

Latest version **1.3.1** (published 2024-11-30) · MIT license · 0 weekly downloads

## Install

```sh
npm install @universal-packages/push-notifications
pnpm add @universal-packages/push-notifications
yarn add @universal-packages/push-notifications
bun add @universal-packages/push-notifications
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.3.1 |
| Published | 2024-11-30 |
| First published | 2023-05-24 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 30.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | David De Anda |
| Maintainers | omarandstuff |

## Links

- npm: https://www.npmjs.com/package/@universal-packages/push-notifications
- Repository: https://github.com/universal-packages/universal-push-notifications
- Homepage: https://github.com/universal-packages/universal-push-notifications#readme
- Issues: https://github.com/universal-packages/universal-push-notifications/issues
- npm.io page: https://npm.io/package/@universal-packages/push-notifications

## Dependencies (3)

- [firebase-admin](https://npm.io/package/firebase-admin.md) ^11.11.0
- [@universal-packages/fs-utils](https://npm.io/package/@universal-packages/fs-utils.md) ^1.2.0
- [@universal-packages/event-emitter](https://npm.io/package/@universal-packages/event-emitter.md) ^1.2.1

## Recent versions

- 1.3.1 (latest) — 2024-11-30
- 1.3.0 — 2024-11-30
- 1.2.7 — 2024-11-26
- 1.2.6 — 2024-08-25
- 1.2.5 — 2024-08-25
- 1.2.4 — 2024-08-25
- 1.2.3 — 2024-07-08
- 1.2.2 — 2024-03-23
- 1.2.1 — 2024-03-22
- 1.2.0 — 2023-12-28
- 1.1.0 — 2023-11-01
- 1.0.4 — 2023-09-27
- 1.0.3 — 2023-09-10
- 1.0.2 — 2023-09-09
- 1.0.1 — 2023-05-24
- … 1 more at https://npm.io/package/@universal-packages/push-notifications/versions

## README

# Push Notifications

[![npm version](https://badge.fury.io/js/@universal-packages%2Fpush-notifications.svg)](https://www.npmjs.com/package/@universal-packages/push-notifications)
[![Testing](https://github.com/universal-packages/universal-push-notifications/actions/workflows/testing.yml/badge.svg)](https://github.com/universal-packages/universal-push-notifications/actions/workflows/testing.yml)
[![codecov](https://codecov.io/gh/universal-packages/universal-push-notifications/branch/main/graph/badge.svg?token=CXPJSN8IGL)](https://codecov.io/gh/universal-packages/universal-push-notifications)

Push notifications back end sender fro android using firebase and iOS using APNS.

## Install

```shell
npm install @universal-packages/push-notifications
```

## PushNotifications

`PushNotifications` is the main class interface to start sending push notifications the users devices.

```js
import { PushNotifications } from '@universal-packages/push-notifications'

const pushNotifications = new PushNotifications({ firebase: ..., apns: ... })

const token = 'token that came from the user device'

await pushNotifications.pushNotification([token], { title: 'Hello', body: 'World' })

```

### Options

- **`firebase`** `FirebaseOptions`
  Include this if you want capabilities for android devices.
  - **`credentialLocation`** `String`
    The location of the firebase credential file. it looks something like this
    ```json
    {
      "type": "service_account",
      "project_id": "universal",
      "private_key_id": "some_private_key",
      "private_key": "-----BEGIN PRIVATE KEY-----\nrandom\nstuff\nnonetheless\nrandom\nstuff\nnonetheless\n-----END PRIVATE KEY-----\n",
      "client_email": "firebase-adminsdk-mvgse@universal.iam.gserviceaccount.com",
      "client_id": "123321",
      "auth_uri": "https://accounts.google.com/o/oauth2/auth",
      "token_uri": "https://oauth2.googleapis.com/token",
      "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
      "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/firebase-adminsdk-mvgse%universal.iam.gserviceaccount.com",
      "universe_domain": "googleapis.com"
    }
    ```
    Or you can pacify the credential manually.
  - **`credential`** `Credential`
    The credential object.
    - **`type`** `String`
    - **`projectId`** `String`
    - **`privateKeyId`** `String`
    - **`privateKey`** `String`
    - **`clientEmail`** `String`
    - **`clientId`** `String`
    - **`authUri`** `String`
    - **`tokenUri`** `String`
    - **`authProviderX509CertUrl`** `String`
    - **`clientX509CertUrl`** `String`
    - **`universeDomain`** `String`
- **`dryRun`** `Boolean`
  Whether to send the notification to the devices or not. This still emits the `push` event.
- **`apns`** `ApnsOptions`
  Include this if you want capabilities for iOS devices.
  - **`p8CertificateLocation`** `String`
    The location of the p8 certificate file. Or you can pass the certificate manually.
  - **`p8Certificate`** `String`
    The p8 certificate.
  - **`teamId`** `String`
    The team id of you apple developer account used to generate the p8 certificate.
  - **`keyId`** `String`
    The key id of you apple developer account used to generate the p8 certificate.
  - **`sandbox`** `Boolean`
    Whether to use the sandbox environment or not.
  - **`apnsTopic`** `String`
    The bundle id of your app.

### Instance methods

#### **`prepare()`** **`async`**

Prepares the instance to start sending push notifications.

#### **`release()`** **`async`**

Releases any resources used by the instance.

#### **`pushNotifications(tokens: String[], notification: Object)`**

- **`tokens`** `String[]`
  The tokens of the devices you want to send the notification to.
- **`notification`** `Object`
  The notification object.
  - **`title`** `String`
    The title of the notification.
  - **`body`** `String`
    The body of the notification.
  - **`data`** `Object`
    The data to be sent with the notification.

Sends the notifications to all devices, tokens can come from any android or iOS device.

## Events

`PushNotifications` will emit events as follow.

```js
pushNotifications.on('warning', (event) => console.log(event))
pushNotifications.on('error', (event) => console.log(event))
pushNotifications.on('push', (event) => console.log(event))
```

## Typescript

This library is developed in TypeScript and shipped fully typed.

## Contributing

The development of this library happens in the open on GitHub, and we are grateful to the community for contributing bugfixes and improvements. Read below to learn how you can take part in improving this library.

- [Code of Conduct](./CODE_OF_CONDUCT.md)
- [Contributing Guide](./CONTRIBUTING.md)

### License

[MIT licensed](./LICENSE).

---
_Source: https://npm.io/package/@universal-packages/push-notifications · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
