Skip to content

Release 2.6.0

Choose a tag to compare
@TysonAndre TysonAndre released this 18 Jul 21:55
· 62 commits to master since this release
  • 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.

    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.