Modern Python APNs client! Supports http/2 and time sensitive notifications
Project description
MoPyAPNs
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c11a1cfaa6c0dbce9fcbbf072065cf7b470943cae2517beaad41e0df9a304591
|
|
| MD5 |
e4c7f61b46c1cb4ddef72fd0eda31498
|
|
| BLAKE2b-256 |
dd2def680e5e73a54a23f4c3a992bbbca04ad8fc005b72ef05771bf2774877d1
|
Provenance
The following attestation bundles were made for mopyapns-0.8.0.tar.gz:
Publisher:
pypi_publish.yml on magnuslo/MoPyAPNs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mopyapns-0.8.0.tar.gz -
Subject digest:
c11a1cfaa6c0dbce9fcbbf072065cf7b470943cae2517beaad41e0df9a304591 - Sigstore transparency entry: 779825175
- Sigstore integration time:
-
Permalink:
magnuslo/MoPyAPNs@2713a41655c641ee24b188f26b6cdcbed6de172e -
Branch / Tag:
refs/tags/8.0.0 - Owner: https://github.com/magnuslo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@2713a41655c641ee24b188f26b6cdcbed6de172e -
Trigger Event:
release
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e8a879196a1d15abc7cb2cc9a34b2f0030d42a8f6f82def255ecda7354b7a966
|
|
| MD5 |
dd9da7843ddceda0817a4736da924b42
|
|
| BLAKE2b-256 |
58a7d6b9d22aee2690e2a5461f05a4f0cc75ab1283dd63d77e6cb14ae1913e87
|
Provenance
The following attestation bundles were made for mopyapns-0.8.0-py3-none-any.whl:
Publisher:
pypi_publish.yml on magnuslo/MoPyAPNs
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mopyapns-0.8.0-py3-none-any.whl -
Subject digest:
e8a879196a1d15abc7cb2cc9a34b2f0030d42a8f6f82def255ecda7354b7a966 - Sigstore transparency entry: 779825177
- Sigstore integration time:
-
Permalink:
magnuslo/MoPyAPNs@2713a41655c641ee24b188f26b6cdcbed6de172e -
Branch / Tag:
refs/tags/8.0.0 - Owner: https://github.com/magnuslo
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@2713a41655c641ee24b188f26b6cdcbed6de172e -
Trigger Event:
release
-
Statement type: