Skip to content

Releases: jchambers/pushy

v0.6.1 - Bug fixes, connection longevity improvements

10 Apr 15:48
Compare
Choose a tag to compare

This release:

  • Fixes a bug where exceptions caught while connecting were mis-reported and sometimes caused the connection future to not fire. See #261; thanks, @ylgrgyq!
  • Sends HTTP/2 PING frames when the connection is idle to prevent connections from closing unexpectedly (see #266).

For a complete list of changes, please see the v0.6.1 milestone.

v0.6 - Proxy support and metrics

29 Mar 03:08
Compare
Choose a tag to compare

This release adds a handful of new features and enhancements that have been on the list of feature requests for some time. The highlights:

  • ApnsClients can now connect to APNs servers through an HTTP, SOCKS4, or SOCKS5 proxy. Please see the "Using a proxy" section of the README for details.
  • Users can assign an ApnsClientMetricsListener to an ApnsClient to gather metrics that provide insight into the client's performance and behavior. Please see the "Metrics" section of the README for details.
  • For users looking to squeeze the most performance possible out of Pushy, ApnsClients may now be set to use epoll by passing an EpollEventLoopGroup to the ApnsClient constructor.

For a complete list of changes, please see the v0.6 milestone.

v0.5.2 - More HTTP/2 bug fixes!

29 Mar 03:03
Compare
Choose a tag to compare

This is another minor release that contains fixes for two bugs:

  • Fixed a NullPointerException that could prevent connection Futures from firing as expected if the connection attempt failed very quickly (#228)
  • Fixed incorrectly-parsed timestamps when a notification was rejected due to an unregistered token (#237)

It also includes a handful of small improvements:

  • Updated to Netty 4.1.0 CR2 (#231)
  • Added additional logging to indicate whether Pushy will try to use the JDK SSL provider or a native SSL provider via netty-tcnative (#230)
  • Added InputStream-based constructors to ApnsClient for those of you who get your certificates via getResourceAsStream (#235)

For a complete list of changes, please see the v0.5.2 milestone.

v0.5.1 - HTTP/2 bug fixes

26 Jan 19:21
Compare
Choose a tag to compare

This is a minor bug fix release that addresses issues identified in the initial HTTP/2 release (v0.5). Specifically:

  • Removed a duplicate and potentially-conflicting dependency (#216)
  • Correctly handle null passwords when loading .p12 files without password protection (#217)
  • Increased default maximum payload size from 2kB to 4kB (#220)
  • Regrettably, dropped our claim that Pushy works under Java 6, which turns out to simply not be true (#224)

For a complete list of changes, please see the v0.5.1 milestone.

v0.5 - HTTP/2

18 Jan 23:44
Compare
Choose a tag to compare

This is a massive update that moves Pushy from using Apple's old Binary Notification Format to using their new, HTTP/2-based APNs protocol. This change has a number of implications, but the most significant is that we now know whether notifications were sent successfully.

Much of Pushy's design prior to 0.5 was driven by the complexities of not knowing whether notifications were sent successfully, and this change means that Pushy's design is now considerably simpler. Please see the README and API documentation for details.

Please note that this version of Pushy—and, for that matter, almost any software written in Java that intends to communicate via HTTP/2—carries some new and non-trivial system requirements. Please see the system requirements section of the README for details.

v0.4.3 - Unprocessed notification fix

04 Mar 18:00
Compare
Choose a tag to compare

This is mainly a bug fix release to address problems introduced in v0.4.2, but also includes some minor enhancements:

  • Fixed a bug introduced in v0.4.2 where listeners weren't notified of unprocessed notifications in most cases (#155)
  • Improved readability of the output of the ExpiredToken#toString method (#153—thanks, @runr!)
  • We now depend on Netty 4.0.26 (#154—thanks, @matzew!)

v0.4.2 - New payload fields, improved handling for bogus sequence numbers

23 Feb 19:02
Compare
Choose a tag to compare

This release includes updates to handle a couple upstream changes:

  • Added support for the title, title-loc-key, and title-loc-args introduced in iOS 8.2 (#148—thanks, @matzew!)
  • Added a workaround for new upstream behavior where the APNs gateway will incorrectly send a sequence number of 0 when receiving a malformed notification like the one we use to close connections (#152—thanks, @U-238!)

Additionally, Pushy now depends on Netty 4.0.25, the latest release at the time of writing, to take advantage of upstream improvements and bug fixes (#147—thanks again, @matzew!).

For additional details, please see the v0.4.2 milestone.

v0.4.1 - Memory usage fix

29 Oct 16:28
Compare
Choose a tag to compare

This release makes no changes to Pushy itself, but updates the required version of Netty to 4.0.24. Netty 4.0.24 includes two changes of interest to Pushy users:

  1. netty/netty#3058 fixes #138, an issue where Pushy would eventually run out of memory when sending lots of notifications.
  2. netty/netty#3031 disables SSLv3; this wasn't an issue for Pushy (since Apple is disabling SSLv3 on the server side), but is another nail in the coffin for those concerned about the POODLE vulnerability

v0.4 - Exciting new technologies

30 Sep 23:37
Compare
Choose a tag to compare

This release includes features to take advantage of new upstream features and works around some limitations in the APNs protocol. Major new features:

  • Pushy now uses the Binary Notification Format to send push notifications. This allows senders to specify a delivery priority when sending notifications. (#64)
  • Pushy now supports features announced at WWDC 2014 (though those features still haven't been documented in the official APNs guide):
    • Payloads may now be up to 2048 bytes long. (#105)
    • ApnsPayloadBuilder now supports the category field. (#108)
  • To work around protocol-level design decisions that prevent us from knowing whether a connection is still alive, connections can now be configured to close after a fixed number of attempts to send push notifications or after a period of inactivity. (#116, #117, #118)
  • Requesting expired tokens from the feedback service is now an asynchronous process and no longer blocks other threads (oops). (#124)
  • Callers can now assign names to push managers. (#119)
  • Due to upstream design decisions concerning long-lived threads and ThreadLocal instances, we no longer recommend using Pushy in a container environment (though this recommendation change is not accompanied by any functional change).

Push managers, push notification connections, and feedback service connections are all now much more configurable. To accommodate the new options, we've retired PushManagerFactory and instead introduced a notion of configuration objects. This change is all but guaranteed to break existing PushManager construction. Callers should now [construct PushManager instances directly](http://relayrides.github.io/pushy/apidocs/0.4/com/relayrides/pushy/apns/PushManager.html#PushManager%28com.relayrides.pushy.apns.ApnsEnvironment, javax.net.ssl.SSLContext, io.netty.channel.nio.NioEventLoopGroup, java.util.concurrent.ExecutorService, java.util.concurrent.BlockingQueue, com.relayrides.pushy.apns.PushManagerConfiguration, java.lang.String%29), and configuration options can be passed to push managers via a PushManagerConfiguration object.

v0.3 - New features for larger applications

07 Apr 23:19
Compare
Choose a tag to compare

This is a very significant release for Pushy. We've significantly reworked the internals to make Pushy easier to read and maintain (and also much more efficient!). We've fixed numerous reported and potential bugs, and strongly recommend upgrading to v0.3 at your earliest convenience. Some key changes in v0.3:

  • Added support for the content-available flag to ApnsPayloadBuilder (#30)
  • Switched to a factory pattern for creating PushManager instances
  • Allowed callers to supply their own BlockingQueue for passing notifications to the PushManager (#20)
  • Fixed a problem where exceptions thrown while processing a rejected notification could go un-handled (#37)
  • RejectedNotificationListeners are now stored as strong references instead of weak references (#40)
  • PushManager instances now drain their internal retry queue before shutting down (#24)
  • Added a FailedConnectionListener interface so applications can decide to stop reconnecting in the event of a permanent connection failure (i.e. `SSLHandshakeException) (#32)
  • Added support for custom SSLContexts (#36)
  • Fixed a bug where the sent notification buffer wasn't being cleared properly, which could result in re-sending previously-successful notifications (#42)
  • PushManagers now use one additional thread per PushManager instance instead of one thread per connection
  • Fixed a bug where shutting down could hang if the shutdown process began while a connection attempt was in progress (#58)