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
Optionalinstead of@Nullable - Literal and localized alert content may now co-exist in the same notification payload
- Added support for new payload fields (
relevance-scoreandinterruption-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
AuthenticationTokenfrom a signing key no longer throws checked exceptions - The
PushNotificationResponseinterface now includes agetStatusCodemethod - Rejection reasons inresponses from the APNs server are now
Optionalinstead 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