Skip to content

iiilx/apns-clerk

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

apns-clerk.

Python client for Apple Push Notification service (APNs).

This project is forked from apns-client, as there was a tiny but severe problem with SSL handshake rendering the package to be unusable. For the time being please check for apns-client's documentation .

Todo

  • [TODO] own documentation for apns-clerk
  • [TODO] proper attributions for previous work

Requirements

  • six - Python 2 and 3 compatibility library.
  • pyOpenSSL - OpenSSL wrapper. Required by standard networking back-end.

Standard library has support for SSL transport. However, it is impossible to use it with certificates provided as a string. We store certificates in database, because we handle different apps on many Celery worker machines. A dirty solution would be to create temporary files, but it is insecure and slow. So, we have decided to use a better OpenSSL wrapper and pyOpenSSL was the easiest to handle. pyOpenSSL is loaded on demand by standard networking back-end. If you use your own back-end, based on some other SSL implementation, then you don't have to install pyOpenSSL.

Alternatives

There are many alternatives available. This library differs in the following design decisions:

  • Support certificates from strings. We do not distribute certificate files on worker machines, they fetch it from the database when needed. This approach simplifies deployment, upgrades and maintenance.
  • Keep connections persistent. An SSL handshaking round is slow. Once connection is established, it should remain open for at least few minutes, waiting for the next batch.
  • Support enhanced format. Apple developers have designed a notoriously bad push protocol. They have upgraded it to enhanced version, which makes it possible to detect which messages in the batch have failed.
  • Clean pythonic API. No need for lots of classes, long lists of exceptions etc.
  • Do not hard-code validation, let APNs fail. This decision makes library a little bit more future proof.

Changelog

v0.1.2

Removed not needed non ascii character which was causing problems with python < 3

v0.1.1

Imported changes from open apns-client pull requests. Thanks Jason Spafford, zhe li and neetu jain.

v0.1

Forked from apns-client and fixed SSL handshake error caused by Apple's SSLv3 deprecation

About

Fork of the APNS-Clerk app hosted on bitbucket

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages