Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

support interruption level on ios devices #711

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from

Conversation

50-Course
Copy link
Member

Hello team,

Digging deep into PyAPNs2, I found that the library does have internal
priority levels, distinctively, Immediate and Delayed.

In addition to this, support different notification types, such as
Background, Alert, VoIP, Complication, FileProvider and
mdm.

This patch extend one or two of these interfaces to support
interruption_levels on User Notification Center. Below is what is
contained in this commit:

  • New enumeration types to support interruption levels:
    time_sensitive, active, passive, critical alerts
  • Wrapper functions to help add additional functionality to existing
    _apns_send and _apns_prepare methods. This design allows for
    modification of functionality without breaking backwards
    compatibility, and also giving control over what-is-what.
  • Functional tests to verify behaviour of this functionality.
    NOTE: This should be tested on real Apple devices or emulators
    before merged.

This patch is a work-in-progress and I would like to get feedback on
this before I proceed with the next steps. Can you take a look at this? @pomali

CC: @jleclanche

Commits:

  • feat: Create module to support library-specific enumeration types
  • feat(APNS): extend library functionality to support interruption level for Apple Devices
  • add interruption_level to apns_send_message() function signature
  • test(APNs): add functional tests for updated apns_send_message() interface

Motivation:

We never know when we might be implementing or extending the
`django-push-notifications` library beyond its current support.

It makes sense to have a module to handle critical moments such as
that raised in #708 (for  `interruption-levels`). This gives control
over newly  implemented interfaces without having to worry about
outdated modules, such as `PyAPNS2`.

This allows us to provide wrapper or extend existing library
functionalities.

Context:

This patch address one side of issue by providing an enumeration module
that can be used to deal with public and underlying APIs.
for Apple Devices

Digging deep into `PyAPNs2`, I found that the library does have internal
priority levels, distinctively, `Immediate` and `Delayed`.

In addition to this, support different notification types, such as
`Background`,  `Alert`, `VoIP`, `Complication`, `FileProvider` and
`mdm`.

This patch extend one or two of these interfaces to support
`interruption_levels` on User Notification Center. Below is what is
contained in this commit:

- [x] New enumeration types to support interruption levels:
  `time_sensitive`, `active`, `passive`, `critical` alerts
- [x] Wrapper functions to help add additional functionality to existing
	`_apns_send` and  `_apns_prepare` methods. This design allows for
	modification of functionality without breaking backwards
	compatibility, and also giving control over what-is-what.
@50-Course 50-Course linked an issue Mar 28, 2024 that may be closed by this pull request
@jleclanche
Copy link
Member

Your PR is difficult to review because of whitespace changes. If there are whitespace fixes to make, please do them in a separate commit/PR.

@50-Course
Copy link
Member Author

That was my editor overriding the editorconfig settings, I think I would have to find a way make it respect editorconfig. It runs black immediately before push, this have been a recent development for me, due to internal changes in my config.

With that pointed out, i'd try see to revert to previous change.

@50-Course 50-Course changed the title 708 support interruption level on ios devices support interruption level on ios devices Apr 3, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Support for iOS interruption-level API
2 participants