{"id":19371945,"url":"https://github.com/chatsecure/apns-client","last_synced_at":"2025-04-23T16:31:46.221Z","repository":{"id":11124740,"uuid":"13485357","full_name":"ChatSecure/apns-client","owner":"ChatSecure","description":"Python client for Apple Push Notification service (APNs).","archived":false,"fork":false,"pushed_at":"2013-10-10T23:40:04.000Z","size":296,"stargazers_count":7,"open_issues_count":0,"forks_count":3,"subscribers_count":6,"default_branch":"master","last_synced_at":"2023-03-23T21:40:04.068Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://bitbucket.org/sardarnl/apns-client","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChatSecure.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-10T23:27:13.000Z","updated_at":"2023-03-23T21:40:04.068Z","dependencies_parsed_at":"2022-08-02T14:16:04.654Z","dependency_job_id":null,"html_url":"https://github.com/ChatSecure/apns-client","commit_stats":null,"previous_names":[],"tags_count":0,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChatSecure%2Fapns-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChatSecure%2Fapns-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChatSecure%2Fapns-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChatSecure%2Fapns-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChatSecure","download_url":"https://codeload.github.com/ChatSecure/apns-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223928443,"owners_count":17226716,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-10T08:20:39.412Z","updated_at":"2024-11-10T08:20:40.066Z","avatar_url":"https://github.com/ChatSecure.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"apns-client.\n====================================\nPython client for `Apple Push Notification service (APNs) \u003chttp://developer.apple.com/library/mac/#documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/ApplePushService/ApplePushService.html\u003e`_.\nCheck `documentation \u003chttp://apns-client.readthedocs.org\u003e`_ to learn how to use it.\n\nCheck the client with similar interface for `Google Cloud Messaging \u003chttps://pypi.python.org/pypi/gcm-client/\u003e`_.\n\n\nRequirements\n------------\n\n- `pyOpenSSL \u003chttps://pypi.python.org/pypi/pyOpenSSL\u003e`_ - OpenSSL wrapper.\n- `omnijson \u003chttps://pypi.python.org/pypi/omnijson/\u003e`_ if you use Python 2.5 or older.\n\nStandard library has support for `SSL transport\n\u003chttp://docs.python.org/2/library/ssl.html\u003e`_. However, it is impossible to use\nit with certificates provided as a string. We store certificates in database,\nbecause we handle different apps on many Celery worker machines.  A dirty\nsolution would be to create temporary files, but it is insecure and slow. So,\nwe have decided to use a better OpenSSL wrapper and ``pyOpenSSL`` was the\neasiest to handle.\n\n\nAlternatives\n------------\n\nThere are `many alternatives\n\u003chttps://pypi.python.org/pypi?%3Aaction=search\u0026term=apns\u0026submit=search\u003e`_\navailable. We have started with `pyapns \u003chttps://pypi.python.org/pypi/pyapns\u003e`_\nand `APNSWrapper \u003chttps://pypi.python.org/pypi/APNSWrapper\u003e`_. This library\ndiffers in the following design decisions:\n\n- *Support certificates from strings*. We do not distribute certificate files\n  on worker machines, they fetch it from the database when needed. This\n  approach simplifies deployment, upgrades and maintenance.\n- *Keep connections persistent*. An SSL handshaking round is slow. Once\n  connection is established, it should remain open for at least few minutes,\n  waiting for the next batch.\n- *Support enhanced format*. Apple developers have designed a notoriously bad\n  push protocol. They have upgraded it to enhanced version, which makes it\n  possible to detect which messages in the batch have failed.\n- *Clean pythonic API*. No need for lots of classes, long lists of exceptions etc.\n- *Do not hard-code validation, let APNs fail*. This decision makes library\n  a little bit more future proof.\n\nSupport\n-------\nAPNs client was created by `Sardar Yumatov \u003cmailto:ja.doma@gmail.com\u003e`_,\ncontact me if you find any bugs or need help. Contact `Getlogic\n\u003chttp://getlogic.nl\u003e`_ if you need a full-featured push notification service\nfor all popular platforms. You can view outstanding issues on the `APNs\nBitbucket page \u003chttps://bitbucket.org/sardarnl/apns-client/\u003e`_.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchatsecure%2Fapns-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchatsecure%2Fapns-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchatsecure%2Fapns-client/lists"}