Catalog PyPI
Back to packageRELEASE DETAILS

4.0

PyPI

aioapns

An efficient APNs Client Library for Python/asyncio

Published14 Apr 2025
Direct dependencies3
Transitive dependenciesNot calculated

README

Version 4.0 documentation
aioapns - An efficient APNs Client Library for Python/asyncio
=================================================================================

.. image:: https://github.com/Fatal1ty/aioapns/workflows/tests/badge.svg
   :target: https://github.com/Fatal1ty/aioapns/actions

.. image:: https://img.shields.io/pypi/v/aioapns.svg
    :target: https://pypi.python.org/pypi/aioapns

.. image:: https://img.shields.io/pypi/pyversions/aioapns.svg
    :target: https://pypi.python.org/pypi/aioapns/

.. image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
    :target: https://opensource.org/licenses/Apache-2.0

**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
-----------

.. code-block:: python

    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.

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Declared dependencies 3

Native requirements
3 direct targetsNot calculated transitive count
Package / targetRequirementRelationship
h2
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "",
  "evaluation": "NOT_EVALUATED"
}
h2>=4.0.0runtime
pyOpenSSL
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "",
  "evaluation": "NOT_EVALUATED"
}
pyOpenSSL>=17.5.0runtime
pyjwt
Environment
{
  "extras": "",
  "marker": null,
  "requires_python": "",
  "evaluation": "NOT_EVALUATED"
}
pyjwt>=2.0.0runtime

Distribution files

2 collected
aioapns-4.0-py3-none-any.whl

bdist_wheel · 14.28 KB · Python py3

Source file
aioapns-4.0.tar.gz

sdist · 13.98 KB · Python source

Source file

Repository

PENDING
fatal1ty/aioapns

Shared repository data · GitHub

License detected in repository
Not collected

Metadata history

Meaningful changes
Current collected state Current

Observed since 21 Oct, 11:37 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package_version:ab9d64f86c7c8489167fd99f1e40e3be686c7b3517cf08a85a289fc9d239b255

Other collected versions

View all collected versions →