This is a minor release that adds support for live activity notifications and push-to-talk notifications. It also updates a number of dependencies and clarifies documentation around serializing notification payloads to JSON.
For a complete list of changes, please see the v0.15.2 milestone.
This is a minor release that adds support for the
location push type introduced in iOS 15 (thank you, @fairEnough83) and fixes an issue with token handling that could lead to notifications getting rejected with
TooManyProviderTokenUpdates under certain circumstances. This release also updates Pushy's dependency on Netty to use the latest version (4.1.74).
This is a major release that includes several new features and, importantly, a few breaking API changes. Please see the v0.15.0 milestone for a complete list of changes.
New features and bug fixes
- Mock servers can once again bind to an OS-selected port and now return the bound port when the server starts up
- Simplified authentication-related exceptions
- Authentication tokens are now shared between connections to reduce the frequency of token changes
- Fixed a bug where connections could stay open after receiving a
GOAWAYframe from the APNs server
- Fixed an issue where channels may not have been cleaned up as expected after an exception
- Fixed various packaging issues
- Enabled TLS hostname verification
- HTTP status codes are now included in responses from the APNs server
- Rejection reasons inresponses from the APNs server are now
- Literal and localized alert content may now co-exist in the same notification payload
- Added support for new payload fields (
interruption-level) introduced in iOS 15
- Added JPMS automatic module names to all project artifacts
- Updated to Netty 4.1.67/netty-tcnative 2.0.41
Some new features, fixes, and general maintenance have led to breaking API changes that Pushy users may need to address in their own code. In particular:
- Starting a mock server now returns a
- Creating a new
AuthenticationTokenfrom a signing key no longer throws checked exceptions
PushNotificationResponseinterface now includes a
- Rejection reasons inresponses from the APNs server are now
- Behavior of setters for alert content in payload builders has changed; literal and localized content may now co-exist in the same payload
This is a maintenance release that fixes a few small issues and adds some new logging to help us debug two outstanding issues (#811 and #816). Changes in this release include:
- Fix a JSON parsing bug that would only affect folks who were trying to use the JSON parser for something other than parsing responses from the APNs server
- Update to Netty 4.1.53/netty-tcnative 2.0.34
- Add more logging when creating/closing connections
- Fix a bug that could cause us to keep sending pings after a channel should have closed
- Add SNI support
- Identify which channels are affected by token changes in log messages
For a complete list of changes, please see the v0.14.2 milestone.
This release is a grab-bag of fixes, cleanup, and improvements. The highlights:
- Fixed a potential bug where we'd continue to try to recover from an expired authentication token even if the server considered the connection permanently invalid
- Significantly improved the performance of our JSON parser
Optionalto convey that timestamps in push notification responses won't always be present
For a complete list of changes, please see the v0.14.1 milestone.
This is a very small maintenance release that back-ports a
NullPointerException fix from v0.14.0 so folks can get the fix without going through a major migration effort.
This is a big release with lots of breaking API changes. Please be prepared for non-trivial migration work before upgrading from v0.13 to v0.14. That said, Pushy v0.14.0 introduces lots of exciting changes and improvements! Here are some highlights:
- Pushy now requires Java 8 or newer
- Pushy now returns
CompletableFuturesinstead of Netty
Futuresin its public API
- We now use
java.timetypes where appropriate
- We now use lambdas internally and in some examples for increased readability
- Pushy now uses JUnit 5 for tests
- We no longer depend on GSON (or any other external JSON library)
- Pushy now offers Gson- and Jackson-based payload builders as separate modules
We also fixed a handful of bugs related to error handling, including a
NullPointerException that could happen if we failed to open an HTTP/2 stream.
For a complete list of changes, please see the v0.14.0 milestone.
This release fixes a number of issues and adds a handful of new features and performance enhancements. Lots of people contributed to this release; thank you!
Please note that Pushy is now an independent project and is no longer sponsored by Turo. The project is still maintained by @jchambers, but package names and Maven coordinates have changed. Please see the mailing list for additional context and discussion.
With all that said, the most notable changes in this release are:
- Pushy is now an independent project and has new package names and Maven coordinates
- Fixed an issue where pending channels might not be closed cleanly when a channel pool was shutting down (thanks, @ylgrgyq!)
- Added OSGi metadata and changed package type from
- Dropped support for OIO transport
- Fixed an issue where, due to an upstream behavior change, clients using token-based authentication would see a radical drop in throughput after tokens were rotated (thanks, @extraSix, @janzar, and @helle!)
- Fixed some broken links to external API docs from the Pushy API documentation
- Removed some duplicative logging statements
- Fixed a memory leak when using lots of clients with a single event loop group (thanks, @eugeneseppel!)
- Added factory methods to construct HTTP proxies based on global JVM settings (thanks, @arunan-interlink!)
- Updated to the latest version of Netty to resolve some (non-applicable!) security warnings
- Various minor performance enhancements
For a complete list of changes, please see the v0.13.11 milestone.
This release adds support for new
apns-push-type header values and the
target-content-id payload field introduced in iOS 13. For a complete list of changes, please see the v0.13.10 milestone.
This release includes support for the new
apns-push-type header introduced in (and required by) iOS 13/watchOS 6. It also includes a fix for an upstream issue where round-robin DNS resolvers wouldn't close the UDP ports they opened, leading to a leak.
For a complete list of changes, please see the v0.13.9 milestone.