Add `attributes-type` and `start` fields for Live Activities payloads
This is a minor release that adds support for the attribute-type
and start
fields for Live Activities Payloads. For a complete list of changes, please see the v0.15.4 milestone or the commits between 0.15.3 and 0.15.4.
Pushy v0.15.3 - live activities and push-to-talk notifications
This is a minor release that:
- Adds support for new Live Activity features (thank you, @louise-scully!)
- Relaxes the bounds on relevance scores in push notification payloads (scores are no longer bounded between 0.0 and 1.0)
- Adds support for the
stale-date
payload field
- Allows callers to opt in to protocol negotiation when opening new connections (thank you, @MarcelHeckel!)
- Adds support for the
apns-unique-id
response header available in the APNs development environment (thank you, @hectorespert!) - Improves performance and resolves a potential inconsistency when verifying authentication tokens in the mock server
For a complete list of changes, plese see the v0.15.3 milestone or the commits between 0.15.2 and 0.15.3.
Pushy v0.15.2 - live activities and push-to-talk notifications
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.
Pushy v0.15.1 - `location` push type and revised token handling
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).
Pushy v0.15.0 - New features and bug fixes
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
GOAWAY
frame 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
Optional
instead of@Nullable
- Literal and localized alert content may now co-exist in the same notification payload
- Added support for new payload fields (
relevance-score
andinterruption-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
Breaking changes
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
CompletableFuture<Integer>
instead ofCompletableFuture<Void>
- Creating a new
AuthenticationToken
from a signing key no longer throws checked exceptions - The
PushNotificationResponse
interface now includes agetStatusCode
method - Rejection reasons inresponses from the APNs server are now
Optional
instead of@Nullable
- Behavior of setters for alert content in payload builders has changed; literal and localized content may now co-exist in the same payload
Pushy v0.14.2 - bug fixes and more logging
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.
Pushy v0.14.1 - bug fixes and cleanup
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
- Use
Optional
to 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.
v0.13.12 - Bug fixes
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.
v0.14.0 - Java 8 and configurable payload builders
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
CompletableFutures
instead of NettyFutures
in its public API - We now use
java.time
types 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.
v0.13.11 - Bug fixes and new project ownership
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
jar
tobundle
(thanks, @arunan-interlink!) - 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.