All Versions
Latest Version
Avg Release Cycle
170 days
Latest Release
1402 days ago

Changelog History

  • v2.7.0 Changes

    November 27, 2019
    • ๐Ÿ›  Bugfix: Change from the deprecated redis.FlushDb alias to redis.FlushDB of go-redis (FlushDb is removed in the latest releases).
      โšก๏ธ This may require updating the version of go-redis that uniqush-push is built with
    • ๐Ÿ›  Bugfix: Properly handle values of sandbox other than sandbox=true when creating push service providers. (#249)
      (This bug is not triggered when there is no sandbox query param)
    • ๐Ÿ›  Bugfix: Fix possible incorrect subscription when sending API response for /push containing multiple subscriptions (pushes were sent correctly)
    • ๐Ÿšง Maintenance: Start using go modules
    • ๐Ÿ“š Maintenance: Add documentation to source code
  • v2.6.1 Changes

    July 21, 2018

    ๐Ÿ’… Maintenance: Fix various code style warnings from code linters (e.g. gometalinter). Refactor and document code.

    ๐Ÿ›  Bugfix: Fix the rare "No device" errors seen when retrying a push. (PR #222)

    ๐Ÿ›  Bugfix: Fix the regular expression used as a sanity check of subscriptions and services. (PR #222)
    The intended accepted characters for use in services and subscriptions were a-z, A-Z, 0-9, -, _, @ or .

    Forbid using the backtick in service and subscription names (this was accidentally permitted by the invalid regex).

    Continue allowing a small number of other invalid characters for now,
    ๐Ÿš€ those may be deprecated in future releases.

  • v2.6.0 Changes

    July 18, 2018
    • โšก๏ธ Maintenance: Update GCM push URL to the equivalent endpoint (#210)
      Applications using GCM are unaffected by this change.
      (The old URL stops working in April 2019)
    • โฌ†๏ธ Maintenance: Upgrade go-redis from v5 to v6.
    • Get rid of excessive database locking when fetching subscriptions for a user.
    • ๐Ÿ”ง Make the APNS pool size configurable at runtime
    • ๐Ÿšš Stop overriding Gomaxprocs (removes a call to runtime.GOMAXPROCS(runtime.NumCPU() + 1)).
      This allows users to override this setting.
      ๐Ÿš€ This is no longer needed because the latest releases of Go have reasonable defaults for GOMAXPROCS.
    • New feature: Add an optional slave_host and slave_port field to the uniqush db config.
      This may help with scaling if the redis master (or sharded redis masters) have high load,
      by performing read operations against the redis slave instead.

    ๐Ÿ”„ Changes to APIs

    New feature: Prevent creating two different push service providers of the same service name and push service type in /addpsp. (#197)
    โšก๏ธ Updating mutable fields of existing PSP will continue to work.

    ๐Ÿ†• New feature: Add optional fields to subscriptions that clients can use to track information about an app with a subscription
    ๐Ÿ”– (app_version, locale, subscribe_date, devid, old_devid (device id)).

    These can be set in calls to /subscribe, and will be returned (if they exist) in calls to /subscriptions

    Note that the subscribe_date provided by the client must be a unix timestamp in seconds.

    • Uniqush-push currently does not use these for anything, but they are returned when fetching subscriptions.
    • devid can be used by clients to remove duplicate subscriptions (e.g. different regid/device token but the same device for GCM/APNS)
      ๐Ÿ‘€ if the same device id is seen in calls to /subscribe.
      (E.g. this can used in combination with subscribe_date to check which subscription was newer)
    • old_devid is only useful if you plan to change the way that device ids are generated in a newer release,
      ๐Ÿšš and want to manually remove duplicate subscriptions if they arise (e.g. for APNS).

    If /subscriptions is called with include_delivery_point_ids=1, this
    will return unique string identifiers for each delivery point (as delivery_point_id) to use with /push

    ๐Ÿ‘€ Make the APNS worker pool size (for the binary API) configurable at runtime. (see example in conf/uniqush-push.conf)

    This controls the number of encrypted TCP connections to APNS (per active APNS Push Service Provider)
    that can run at a given time.

    0๏ธโƒฃ This defaults to 13 and has a maximum of 50. The default should be reasonable for most use cases.

    /push now accepts an optional parameter delivery_point_id with a comma separated list of
    delivery point ids to push to, e.g. delivery_point_id="apns:abcdef0123456789"
    to push to the single subscription with that delivery point id.

    Knowing the delivery point id allows clients to implement custom logic to invoke uniqush-push's APIs

    ๐Ÿ›ฐ For example, a client may wish to push different payloads (or not push at all)
    to endpoints running app_version 1.2.3 of your app or older.

    ๐Ÿ›ฐ (or base the payload on the locale of the device, etc)

    This parameter only needs to be used if you want to push to some delivery points (for a subscriber) but not others.

  • v2.5.0 Changes

    April 01, 2018
    • ๐Ÿ‘Œ Support "title", "title-loc-key", and "title-loc-args"
    • ๐Ÿ‘Œ Support larger APNS payloads.
      ๐Ÿ‘Œ Support 5120 byte payloads for APNS voip pushes
      (Where the Cert is a VOIP cert and uniqush.apns_voip=1 is part of
      the query params in the call to /push
    • ๐Ÿ‘Œ Support more granular loglevel levels in uniqush config files:
      โš  alert, error, warn/warning, standard/verbose/info, and debug
  • v2.4.0 Changes

    October 07, 2017
    • ๐Ÿ†• New feature: Initial support for GCM/FCM "notification" pushes (Documented in PR #185).
      uniqush.notification.gcm and uniqush.notification.fcm can be used
      as fields for /push, with the JSON blob to send GCM/FCM for the
      optional "notification" message.
      "notification" messages will let GCM/FCM display the notification for you.
    • ๐Ÿšง Maintenance: Change from to (equivalent endpoints)
    • ๐Ÿš€ Maintenance: Bump go version used to compile releases
    • ๐Ÿšง Maintenance: go 1.9+ is recommended for compiling and testing
    • ๐Ÿ› Bug fix: Improve logging subscriber name in failed API requests.
  • v2.3.0 Changes

    July 18, 2017
    • ๐Ÿ†• New feature: Add /previewpush endpoint to preview the payload that would be
      generated and sent to push services. (Issue #140)
      This helps with debugging.
    • โšก๏ธ Maintenance: Update APNS binary provider API(default) from version 1 to version 2.
    • โฌ†๏ธ Maintenance: Upgrade to redis.v5 (Issue #143)
    • ๐Ÿ†• New provider: Add FCM support. (Issue #148)
      The parameters that would be provided to /addpsp, /subscribe, and /push are
      the same as they would be for GCM. (Replace "gcm" with "fcm" when following instructions)
    • ๐Ÿ†• New feature: Add support APNS HTTP2 API (Issue #157, PR #173)
      This gives more accurate results on whether a push succeeded,
      ๐ŸŽ and should not impact Uniqush's performance.
      To set this up, call /addpsp (to create a new provider or modify an
      existing provider) with the same params you would use to create a new
      APNS endpoint for binary providers (including cert and key),
      in addition to providing bundleid.
      โœ… Currently, to make testing easy, each call to /push must be provided with
      the query param value uniqush.http=1.
      Otherwise, uniqush continues to use the APNS binary provider API.
    • ๐Ÿšง Maintenance: Use unescaped payloads for GCM and FCM.
      ๐Ÿ›ฐ This allows larger payloads, avoiding escaping characters such as < and >

    ๐Ÿ›  Fixes #134

    go 1.8.3+ and an up to date version of
    are suggested (For the APNS HTTP2 API).

  • v2.2.0 Changes

    November 03, 2016
    • โž• Add API endpoints for querying subscriptions (/subscriptions), available services (/services), and a migration API for building the services set (/rebuildserviceset)
    • ๐Ÿ‘ Allow for providing custom JSON payloads to ADM, APNS, and GCM
    • โž• Add feedback to indicate whether a delivery point was modified on push (thanks Clemens Fischer)
    • ๐Ÿ‘ Better connection pooling for the GCM implementation reduces memory footprint by about 90% for if(we)
    • Migrate Redis implementation to redis.v3
    • ๐Ÿšš Automatically remove invalid PSPs if they are detected
  • v2.1.0 Changes

    March 09, 2016


    ๐Ÿ›  This release contains bugfixes, new APIs and improvements.

    ๐Ÿ”„ ChangeLog:

    • ๐Ÿ‘Œ improvement Add new APIs for listing the subscriptions of a subscriber and for listing the services exist.
    • ๐Ÿ›  bugfix Fix concurrency issues in ADM, APNS. Change the APNS implementation from a buggy connection pool to a reliable worker pool.
    • ๐Ÿ›  bugfix Fix a bug which would lead to an infinite loop in rare circumstances.
    • ๐Ÿ‘Œ improvement Remove Go's default HTML escaping of JSON payloads, for APNS. The APNS servers now render payloads with characters such as '"' properly.
    • ๐Ÿ‘Œ improvement Add more details to error messages.
    • ๐Ÿ‘Œ improvement Add enough buffer space for potential 100-byte APNS device tokens.
  • v2.0.0 Changes

    March 09, 2016


    ๐Ÿš€ This release contains a change to the response format, as well as bug fixes and improvements.

    ๐Ÿ”„ ChangeLog:

    • ๐Ÿ‘Œ improvement Changed the response format of most APIs from logs to JSON.
      ๐Ÿ“œ This allows clients to reliably parse results and errors from the API response.
      ๐Ÿ“œ This will break clients that parse the old format
    • ๐Ÿ‘Œ improvement Allow 2048 byte APNS payloads
    • ๐Ÿ›  bugfix Fix various memory leaks.
    • ๐Ÿ›  bugfix Fix bugs in closing connections.
    • โœ‚ Remove support for C2DM, which was shut down by Google on October 2015.