Skip to main content

An efficient APNs Client Library for Python/asyncio

Project description

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.

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

aioapns-4.0.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

aioapns-4.0-py3-none-any.whl (14.6 kB view details)

Uploaded Python 3

File details

Details for the file aioapns-4.0.tar.gz.

File metadata

  • Download URL: aioapns-4.0.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for aioapns-4.0.tar.gz
Algorithm Hash digest
SHA256 3715faabf3fa6c0240e7637f4427d88d08afdcceb0dcfb956c6d09b6f49427f8
MD5 3e536a0823acee38f14e62f859cb66b5
BLAKE2b-256 39511ce93531e9267e24151e659cf96a284506f5ba661bf09728a933c7437456

See more details on using hashes here.

File details

Details for the file aioapns-4.0-py3-none-any.whl.

File metadata

  • Download URL: aioapns-4.0-py3-none-any.whl
  • Upload date:
  • Size: 14.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.11

File hashes

Hashes for aioapns-4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 54bf57c14079f5643e3f458a75e4a31aaedd622be5c358f3efd5fd4aec831d0f
MD5 d5d8de3a9377f75e71eef7b0549f9643
BLAKE2b-256 9ad0da627f8349894a2941ca09fcaaf354d5038fc264e46275dce8fef5b839aa

See more details on using hashes here.

Supported by

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