Skip to main content

aioapns - An efficient APNs Client Library for Python/asyncio

https://github.com/Fatal1ty/aioapns/workflows/tests/badge.svg https://img.shields.io/pypi/v/aioapns.svg https://img.shields.io/pypi/pyversions/aioapns.svg https://img.shields.io/badge/License-Apache%202.0-blue.svg

aioapns is a library designed specifically for sending push-notifications to iOS devices via Apple Push Notification Service. aioapns provides an efficient client through asynchronous HTTP2 protocol for use with Python’s asyncio framework.

aioapns requires Python 3.8 or later.

Performance

In my testing aioapns allows you to send on average 1.3k notifications per second on a single core.

Features

  • Internal connection pool which adapts to the current load

  • Support for certificate and token based connections

  • Ability to set TTL (time to live) for notifications

  • Ability to set priority for notifications

  • Ability to set collapse-key for notifications

  • Ability to use production or development APNs server

  • Support for basic HTTP-Proxies

Installation

Use pip to install:

$ pip install aioapns

Basic Usage

import asyncio
from uuid import uuid4
from aioapns import APNs, NotificationRequest, PushType


async def run():
    apns_cert_client = APNs(
        client_cert='/path/to/apns-cert.pem',
        use_sandbox=False,
    )
    with read('/path/to/apns-key.p8') as key:
        apns_key_client = APNs(
            key=key,
            key_id='<KEY_ID>',
            team_id='<TEAM_ID>',
            topic='<APNS_TOPIC>',  # Bundle ID
            use_sandbox=False,
        )
    request = NotificationRequest(
        device_token='<DEVICE_TOKEN>',
        message = {
            "aps": {
                "alert": "Hello from APNs",
                "badge": "1",
            }
        },
        notification_id=str(uuid4()),  # optional
        time_to_live=3,                # optional
        push_type=PushType.ALERT,      # optional
    )
    await apns_cert_client.send_notification(request)
    await apns_key_client.send_notification(request)

loop = asyncio.get_event_loop()
loop.run_until_complete(run())

License

aioapns is developed and distributed under the Apache 2.0 license.

Metadata

Release files for aioapns 4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for aioapns 4.0
File Size Uploaded
aioapns-4.0.tar.gz 14.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aioapns 4.0
File Interpreter ABI Platform
aioapns-4.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.9 kB

Release files / aioapns-4.0.tar.gz

Download URL aioapns-4.0.tar.gz
Size 14.3 kB
Tags Source
SHA-256 checksum
How to use checksums
3715faabf3fa6c0240e7637f4427d88d08afdcceb0dcfb956c6d09b6f49427f8
BLAKE2b-256 checksum
How to use checksums
39511ce93531e9267e24151e659cf96a284506f5ba661bf09728a933c7437456
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.11

Release files / aioapns-4.0-py3-none-any.whl

Download URL aioapns-4.0-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
54bf57c14079f5643e3f458a75e4a31aaedd622be5c358f3efd5fd4aec831d0f
BLAKE2b-256 checksum
How to use checksums
9ad0da627f8349894a2941ca09fcaaf354d5038fc264e46275dce8fef5b839aa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.11.11

Release history Release notifications | RSS feed

This release

4.0 This release

2 release files

3.3.1

2 release files

3.3

2 release files

3.2

2 release files

3.1

2 release files

3.0

2 release files

2.2

2 release files

2.1

2 release files

2.0.2

1 release file

2.0.1

1 release file

2.0

1 release file

1.12

1 release file

1.11

1 release file

1.10

1 release file

1.9.1

1 release file

1.9

1 release file

1.8

1 release file

1.7

1 release file

1.6.2

1 release file

1.6.1

1 release file

1.6

1 release file

1.5.2

1 release file

1.5.1

1 release file

1.5

1 release file

1.4

1 release file

1.3

1 release file

1.2

1 release file

1.1.1

1 release file

1.1

1 release file

1.0

1 release file

0.6

1 release file

0.5

1 release file

0.4.1

1 release file

0.4

1 release file

0.3

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page