Search code examples
iosdjangopush-notificationdjango-push-notifications

Sending iOS Push Notifications using Django: HTTP/2-based APNs provider API and binary protocol


We need to send iOS push notifications using our Django based backend. Currently, we use this library https://github.com/jazzband/django-push-notifications for sending notifications. Recently, received this mail from Apple Developers.

The HTTP/2‑based Apple Push Notification service (APNs) provider API lets you take advantage of great features, such as authentication with a JSON Web Token, improved error messaging, and per‑notification feedback. If you still send push notifications with the legacy binary protocol, make sure to upgrade to the APNs provider API as soon as possible. APNs will no longer support the legacy binary protocol after March 31, 2021.

I saw that this library uses apns2 (https://pypi.org/project/apns2/) for sending push notifications on iOS and that uses HTTP/2 protocol for sending notifications. So, this library can continue to be used for sending iOS notifications right? Can anybody clarify that for me? Also, it would be great if someone could explain the meaning of legacy binary protocol, that would be great.


Solution

  • After posting the question here, I had also raised Github Issue on Django-Push-Notifications Repository.

    I have got a reply from maintainers and it looks like we would be able to continue using this library. Posting his reply here,

    For what I understand this should not be an issue nor for this package nor for apns2 (which is used to send Apple-Push-Notifications).

    Apple is dismantling the legacy binary protocol (which was announced on October 9 2020) in favor of the HTTP one. However since apns2 implements the latter this would not be an issue here since it already uses the preferred protocol.

    For the record: here is the specification of the legacy binary protocol for APNS.

    https://github.com/jazzband/django-push-notifications/issues/601#issuecomment-793489138