# node-apn/node-apn

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/node-apn-node-apn).**

4,404 stars · 679 forks · JavaScript · MIT

## Links

- GitHub: https://github.com/node-apn/node-apn
- awesome-repositories: https://awesome-repositories.com/repository/node-apn-node-apn.md

## Description

node-apn is a Node.js library and push notification driver used to send remote notifications to Apple devices via the Apple Push Notification service. It functions as an HTTP/2 client that manages the construction and transmission of JSON payloads to the Apple notification gateway.

The library supports multiple identity verification methods, including certificate-based authentication using PEM or PFX files and token-based authentication with automatically renewing tokens. It includes capabilities for routing traffic through intermediary proxy servers and secure HTTP tunnels to bypass restrictive network security rules.

The project provides tools for notification payload definition and delivery management, allowing for the control of alert parameters such as priority, expiration timestamps, and collapse identifiers. It handles asynchronous message queueing, stream multiplexing over persistent connections, and reliable delivery tracking for device tokens.

## Tags

### DevOps & Infrastructure

- [Apple Push Notification Integrations](https://awesome-repositories.com/f/devops-infrastructure/push-notification-services/apple-push-notification-integrations.md) — Provides a comprehensive Node.js library for sending remote push notifications to Apple devices via APNs.
- [Notification Delivery Queues](https://awesome-repositories.com/f/devops-infrastructure/queue-management/message-queues/notification-delivery-queues.md) — Handles asynchronous queueing and automatic retries to ensure notification messages reach their destination.

### Networking & Communication

- [iOS Push Notification Deliveries](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/notification-delivery-services/push-notification-providers/mobile-push-notification-deliveries/ios-push-notification-deliveries.md) — Provides a dedicated driver for sending remote push notifications specifically to iOS devices via the Apple Push Notification service. ([source](https://github.com/node-apn/node-apn#readme))
- [Notification Payload Definitions](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/notification-delivery-services/payload-metadata/notification-payload-definitions.md) — Provides structured setters and raw JSON support for defining the data, headers, and delivery parameters of device alerts. ([source](https://github.com/node-apn/node-apn/blob/main/doc/notification.markdown))
- [Device-Specific Deliveries](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-services/notification-delivery-services/push-notification-providers/amazon-device-messaging-integrations/device-specific-deliveries.md) — Manages the delivery of structured JSON payloads to specific device tokens while tracking delivery status.
- [HTTP/2 Support](https://awesome-repositories.com/f/networking-communication/http-2-support.md) — Implements a persistent HTTP/2 client specifically for reliable message delivery to Apple's push provider.
- [Stream Multiplexing Management](https://awesome-repositories.com/f/networking-communication/http-2-support/stream-multiplexing-management.md) — Utilizes HTTP/2 stream multiplexing to send multiple notification payloads over a single persistent TCP socket.
- [Notification Payload Generators](https://awesome-repositories.com/f/networking-communication/notification-payload-generators.md) — Includes tools for generating the specific JSON structures, badges, and alerts required by the Apple Push Notification service. ([source](https://github.com/node-apn/node-apn/blob/main/doc/apn.markdown))
- [Persistent HTTP Connections](https://awesome-repositories.com/f/networking-communication/persistent-http-connections.md) — Manages long-lived HTTP/2 connections to ensure efficient and reliable delivery of multiple notifications. ([source](https://github.com/node-apn/node-apn#readme))
- [Messaging Reliability](https://awesome-repositories.com/f/networking-communication/communication-platforms-services/messaging-notification-systems/messaging-reliability.md) — Implements asynchronous message queueing and delivery tracking to ensure notifications reliably reach Apple device tokens. ([source](https://github.com/node-apn/node-apn/blob/main/ChangeLog.md))
- [Notification Parameter Controls](https://awesome-repositories.com/f/networking-communication/message-delivery-pipelines/delivery-status-notifications/notification-parameter-controls.md) — Allows fine-grained control over how devices display alerts through priority and expiration parameters. ([source](https://github.com/node-apn/node-apn/blob/main/doc/notification.markdown))
- [Traffic Routing Proxies](https://awesome-repositories.com/f/networking-communication/network-infrastructure-routing/network-infrastructure-configuration/network-infrastructure/traffic-routing-proxies.md) — Directs notification traffic through intermediary servers to bypass restrictive corporate firewalls.
- [Network Tunnels](https://awesome-repositories.com/f/networking-communication/network-tunnels.md) — Routes outgoing traffic through encrypted remote servers via HTTP tunnels to bypass network restrictions.
- [Proxy Server Routing](https://awesome-repositories.com/f/networking-communication/proxy-server-routing.md) — Allows notification traffic to be routed through proxy servers to bypass corporate network restrictions. ([source](https://github.com/node-apn/node-apn/blob/main/ChangeLog.md))

### Part of an Awesome List

- [API Payload Serializers](https://awesome-repositories.com/f/awesome-lists/data/json-and-serialization/api-payload-serializers.md) — Transforms structured notification data into the specific JSON format required by the Apple push service API.

### Security & Cryptography

- [Connection Certificate Verifiers](https://awesome-repositories.com/f/security-cryptography/cryptography/ssl-tls-certificate-management/connection-certificate-verifiers.md) — Verifies sender identity using PEM or PFX certificates during the initial TLS handshake with APNs.
- [APNs Authentication Wrappers](https://awesome-repositories.com/f/security-cryptography/identity-access-management/identity-management/server-authenticity-verification/apns-authentication-wrappers.md) — Offers a unified module for managing secure connections via PEM certificates, PFX files, or tokens.
- [Certificate-Based Authentication](https://awesome-repositories.com/f/security-cryptography/identity-access-management/identity-management/server-authenticity-verification/certificate-based-authentication.md) — Provides identity verification using PEM or PFX certificates to establish secure connections. ([source](https://github.com/node-apn/node-apn/wiki/Preparing-Certificates))
- [APNs Connection Managers](https://awesome-repositories.com/f/security-cryptography/secure-connection-managers/apns-connection-managers.md) — Implements the secure connection logic required to communicate with Apple's notification gateway. ([source](https://github.com/node-apn/node-apn/blob/main/doc/apn.markdown))
- [Token-Based Authentication](https://awesome-repositories.com/f/security-cryptography/token-based-authentication.md) — Secures connections using automatically renewing tokens to maintain constant connectivity to notification services. ([source](https://github.com/node-apn/node-apn/blob/main/ChangeLog.md))

### Mobile Development

- [Node.js Push Notification Integrations](https://awesome-repositories.com/f/mobile-development/node-js-push-notification-integrations.md) — Provides the necessary integration to trigger mobile push notifications from a Node.js server.
