Skip to main content

Modern Python APNs client! Supports http/2 and time sensitive notifications

Project description

MoPyAPNs

PyPI version PyPI version Build Status

Python library for interacting with the Apple Push Notification service (APNs) via HTTP/2 protocol using httpx

Installation

Either download the source from GitHub or use pip:

pip install mopyapns

Sample usage

import collections
from apns2.client import APNsClient
from apns2.payload import Payload

token_hex = 'b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b87'
payload = Payload(alert="Hello World!", sound="default", badge=1)
topic = 'com.example.App'
client = APNsClient('key.pem', use_sandbox=False, use_alternative_port=False)
client.send_notification(token_hex, payload, topic)

# To send a notification with a specific interruption level (iOS 15+)
payload = Payload(alert="Hello World!", sound="default", interruption_level='time-sensitive')
client.send_notification(token_hex, payload, topic)

# To send multiple notifications in a batch
Notification = collections.namedtuple('Notification', ['token', 'payload'])
notifications = [Notification(payload=payload, token=token_hex)]
client.send_notification_batch(notifications=notifications, topic=topic)

# To use token based authentication
from apns2.credentials import TokenCredentials

auth_key_path = 'path/to/auth_key'
auth_key_id = 'app_auth_key_id'
team_id = 'app_team_id'
token_credentials = TokenCredentials(auth_key_path=auth_key_path, auth_key_id=auth_key_id, team_id=team_id)
client = APNsClient(credentials=token_credentials, use_sandbox=False)
client.send_notification_batch(notifications=notifications, topic=topic)

Requirements

  • Python 3.10 or later
  • httpx 0.28.1 or later (with http2 support)
  • cryptography 45.0.4 or later
  • PyJWT 2.10.1 or later

Further Info

iOS Reference Library: Local and Push Notification Programming Guide

Contributing

To develop mopyapns, check out the code and install dependencies using PDM:

# Clone the source code.
git clone https://github.com/magnuslo/mopyapns.git
cd mopyapns
# Create a virtualenv and install dependencies.
pdm install

To run the tests:

pdm run pytest

To run the linter:

pdm run pylint --reports=n apns2 test

License

mopyapns is distributed under the terms of the MIT license.

See LICENSE file for the complete license details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mopyapns-0.8.0.tar.gz (12.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mopyapns-0.8.0-py3-none-any.whl (14.5 kB view details)

Uploaded Python 3

File details

Details for the file mopyapns-0.8.0.tar.gz.

File metadata

  • Download URL: mopyapns-0.8.0.tar.gz
  • Upload date:
  • Size: 12.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mopyapns-0.8.0.tar.gz
Algorithm Hash digest
SHA256 c11a1cfaa6c0dbce9fcbbf072065cf7b470943cae2517beaad41e0df9a304591
MD5 e4c7f61b46c1cb4ddef72fd0eda31498
BLAKE2b-256 dd2def680e5e73a54a23f4c3a992bbbca04ad8fc005b72ef05771bf2774877d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for mopyapns-0.8.0.tar.gz:

Publisher: pypi_publish.yml on magnuslo/MoPyAPNs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mopyapns-0.8.0-py3-none-any.whl.

File metadata

  • Download URL: mopyapns-0.8.0-py3-none-any.whl
  • Upload date:
  • Size: 14.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mopyapns-0.8.0-py3-none-any.whl
Algorithm Hash digest
SHA256 e8a879196a1d15abc7cb2cc9a34b2f0030d42a8f6f82def255ecda7354b7a966
MD5 dd9da7843ddceda0817a4736da924b42
BLAKE2b-256 58a7d6b9d22aee2690e2a5461f05a4f0cc75ab1283dd63d77e6cb14ae1913e87

See more details on using hashes here.

Provenance

The following attestation bundles were made for mopyapns-0.8.0-py3-none-any.whl:

Publisher: pypi_publish.yml on magnuslo/MoPyAPNs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page