Skip to main content

An efficient APNs Client Library for Python/asyncio

Project description

https://github.com/Fatal1ty/aioapns/workflows/tests/badge.svg Requirements Status 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.5 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

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,
    )
    apns_key_client = APNs(
        key='/path/to/apns-key.p8',
        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-2.1.tar.gz (13.1 kB view details)

Uploaded Source

Built Distribution

aioapns-2.1-py3-none-any.whl (13.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aioapns-2.1.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for aioapns-2.1.tar.gz
Algorithm Hash digest
SHA256 2ce526910bc2514a84b8105abe80508526ceafc0097c89f86bbbc501f8666c99
MD5 cb05be6e502e710b00615c195226487c
BLAKE2b-256 d9963710b67291400645c8a9618ae7e9cdea0b52fc789a4d2137e216c179a54b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: aioapns-2.1-py3-none-any.whl
  • Upload date:
  • Size: 13.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/4.10.1 pkginfo/1.8.2 requests/2.27.1 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.10.1

File hashes

Hashes for aioapns-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 095a205ec08481a640ea85be1a85e4c1b26a43058a489ee7e48dcc13ab2d1d12
MD5 463789e910b07a5f20d603d862fe1f13
BLAKE2b-256 44136c9d4ddc68bdadfcd40d79ec38c7e9ed810949582e25698a577f06a66321

See more details on using hashes here.

Supported by

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