### APNS HTTP/2 API Setup Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Enables support for the APNS HTTP/2 API, providing more accurate success feedback. To use, call `/addpsp` with APNS binary provider parameters and `bundleid`, and include `uniqush.http2=1` in `/push` calls. ```APIDOC Endpoint: /addpsp Parameters: (APNS binary provider params) bundleid: Required for APNS HTTP/2 Endpoint: /push Query Parameters: uniqush.http2=1 Notes: Requires go 1.8.3+ and golang.org/x/net/http2. If `uniqush.http2=1` is not provided, the APNS binary provider API is used. ``` -------------------------------- ### Go Version Recommendation Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Recommends Go version 1.9+ for compiling and testing Uniqush. For the APNS HTTP/2 API, Go 1.8.3+ and `golang.org/x/net/http2` are suggested. ```Go // General recommendation: go 1.9+ // For APNS HTTP/2 API: go 1.8.3+ import "golang.org/x/net/http2" ``` -------------------------------- ### Querying Subscriptions and Services APIs Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Introduces new API endpoints for querying subscriptions (`/subscriptions`), available services (`/services`), and a migration API for rebuilding the services set (`/rebuildserviceset`). ```APIDOC Endpoints: /subscriptions: Lists subscriptions for a subscriber. /services: Lists available services. /rebuildserviceset: Migrates the services set. ``` -------------------------------- ### Uniqush-push 2.7.0: Sandbox Value Handling Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Fixes an issue in uniqush-push 2.7.0 related to the handling of `sandbox` values other than `sandbox=true` when creating push service providers. The bug was not triggered if the `sandbox` query parameter was absent. ```Go 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) ``` -------------------------------- ### Uniqush Configuration Log Levels Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Supports more granular log levels in Uniqush configuration files. Available levels include alert, error, warn/warning, standard/verbose/info, and debug. ```APIDOC Configuration: log levels: alert, error, warn, warning, standard, verbose, info, debug ``` -------------------------------- ### Redis Migration Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Migrates the Redis implementation from `redis.v5` to `redis.v3`. This ensures compatibility with newer Redis client libraries. ```Go // Migration from redis.v5 to redis.v3 // Example import path (may vary based on actual library structure): // import "github.com/go-redis/redis/v3" ``` -------------------------------- ### Uniqush-push 2.6.0: APNS Pool Size and GOMAXPROCS Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Uniqush-push 2.6.0 introduces runtime configurability for the APNS pool size and removes the override of `GOMAXPROCS`. This allows users to manage concurrency settings more effectively, leveraging Go's improved default GOMAXPROCS. ```Go - 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. ``` -------------------------------- ### Uniqush-push 2.5.0: APNS Payload Support Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Uniqush-push version 2.5.0 adds support for larger APNS payloads and specific fields like `title`, `title-loc-key`, and `title-loc-args`. ```Go - Support "title", "title-loc-key", and "title-loc-args" - Support larger APNS payloads. ``` -------------------------------- ### Preview Push Payload Endpoint Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Adds a `/previewpush` endpoint to preview the generated payload before sending it to push services. This is helpful for debugging. ```APIDOC Endpoint: /previewpush Purpose: Generates and displays the payload that would be sent to push services. Use Case: Debugging push notification payloads. ``` -------------------------------- ### FCM Provider Support Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Adds support for the FCM provider. Parameters for `/addpsp`, `/subscribe`, and `/push` are the same as for GCM, simply replacing 'gcm' with 'fcm'. ```APIDOC Provider Setup: Use 'fcm' instead of 'gcm' for parameters in: /addpsp /subscribe /push ``` -------------------------------- ### Uniqush-push 2.6.0: Redis Slave Host Configuration Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md A new optional `slave_host` and `slave_port` field has been added to the uniqush database configuration in version 2.6.0. This feature aids in scaling by allowing read operations to be directed to Redis slaves, reducing load on the master. ```Go - 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. ``` -------------------------------- ### Uniqush-push API: Subscription Optional Fields Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md New optional fields (`app_version`, `locale`, `subscribe_date`, `devid`, `old_devid`) have been added to subscriptions. These can be set during `/subscribe` calls and are returned in `/subscriptions`. `subscribe_date` must be a Unix timestamp in seconds. These fields aid clients in tracking app information and managing duplicate subscriptions. ```APIDOC - 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). ``` -------------------------------- ### APNS Implementation Improvement Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Changes the APNS implementation from a connection pool to a worker pool to fix concurrency issues and improve reliability. ```Go // APNS Implementation Change: // From connection pool to worker pool // Fixes concurrency issues and improves reliability. ``` -------------------------------- ### Uniqush-push 2.7.0: Subscription Handling in API Responses Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Corrects a bug in uniqush-push 2.7.0 concerning the handling of multiple subscriptions in API responses for `/push`. While pushes were sent correctly, the subscription data in the response was potentially incorrect. ```Go Bugfix: Fix possible incorrect subscription when sending API response for /push containing multiple subscriptions (pushes were sent correctly) ``` -------------------------------- ### Uniqush-push 2.6.0: Redis Upgrade and Locking Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md In uniqush-push 2.6.0, the go-redis library was upgraded from v5 to v6. Additionally, excessive database locking during subscription fetching for users has been reduced. ```Go Maintenance: Upgrade go-redis from v5 to v6. - Get rid of excessive database locking when fetching subscriptions for a user. ``` -------------------------------- ### Uniqush-push 2.6.1: Subscription and Service Name Validation Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Fixes a rare bug in uniqush-push 2.6.1 related to the regular expression used for validating subscriptions and services. The fix ensures that only allowed characters (`a-z, A-Z, 0-9, -, _, @ or .`) are permitted, specifically forbidding the backtick character. ```Go 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 few other invalid characters for now. Those may be deprecated in future releases. ``` -------------------------------- ### Uniqush-push 2.7.0: Redis FlushDb Alias Fix Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Addresses a bugfix in uniqush-push 2.7.0 where the deprecated `redis.FlushDb` alias was changed to `redis.FlushDB` to align with go-redis updates. This change might necessitate updating the go-redis version used by uniqush-push. ```Go 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 ``` -------------------------------- ### Uniqush-push API: Delivery Point IDs in /subscriptions and /push Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md When `/subscriptions` is called with `include_delivery_point_ids=1`, it now returns unique `delivery_point_id` strings. The `/push` API also accepts an optional `delivery_point_id` parameter for targeted pushes to specific delivery points. ```APIDOC - 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` - `/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. ``` -------------------------------- ### Uniqush RESTful API Usage Source: https://github.com/uniqush/uniqush-push/blob/master/README.md Uniqush-push provides RESTful APIs for communication, allowing you to send push notifications to mobile devices. Any language with an HTTP client library can interact with these APIs. Refer to the official API documentation for detailed endpoint information. ```APIDOC Uniqush-push RESTful APIs: Communication with uniqush-push is done through HTTP protocol. Example Usage: - Send push notification to a device. - Manage subscriptions. - Register devices. For details about specific API endpoints, parameters, and response formats, please refer to the official API documentation: http://uniqush.org/documentation/usage.html ``` -------------------------------- ### GCM/FCM Notification Pushes Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Introduces initial support for GCM/FCM 'notification' pushes. These allow GCM/FCM to display the notification directly. Use `uniqush.notification.gcm` or `uniqush.notification.fcm` with a JSON blob for the notification message. ```APIDOC Endpoint: /push Fields: uniqush.notification.gcm: JSON blob for GCM notification uniqush.notification.fcm: JSON blob for FCM notification Notes: GCM/FCM handles notification display. Replaces `https://android.googleapis.com/gcm/send` with `https://gcm-http.googleapis.com/gcm/send`. ``` -------------------------------- ### APNS VoIP Push Payload Support Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Enables support for 5120 byte payloads for APNS VoIP pushes. This requires the certificate to be a VOIP cert and the query parameter `uniqush.apns_voip=1` to be set in the `/push` request. ```APIDOC Endpoint: /push Query Parameters: uniqush.apns_voip=1 Notes: Requires a VOIP certificate for APNS. Maximum payload size: 5120 bytes. ``` -------------------------------- ### GCM Connection Pooling Improvement Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Improves connection pooling for the GCM implementation, significantly reducing memory footprint (by approximately 90% for if(we)). ```Go // GCM Implementation Improvement: // Enhanced connection pooling reduces memory footprint by ~90%. ``` -------------------------------- ### APNS Device Token Buffer Space Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Adds sufficient buffer space for potential 100-byte APNS device tokens. ```APIDOC APNS Configuration: Buffer space increased for device tokens (up to 100 bytes). ``` -------------------------------- ### Uniqush-push API: Prevent Duplicate Push Service Providers Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md The `/addpsp` API endpoint in uniqush-push now prevents the creation of two distinct push service providers with the same service name and push service type. Updating mutable fields of existing providers remains functional. ```APIDOC - 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. ``` -------------------------------- ### Custom JSON Payloads for Push Services Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Allows providing custom JSON payloads for ADM, APNS, and GCM push services. This offers more flexibility in message formatting. ```APIDOC Push Service Configuration: Custom JSON payloads can be provided for: ADM APNS GCM ``` -------------------------------- ### Uniqush Push Notification System Source: https://github.com/uniqush/uniqush-push/blob/master/README.md Uniqush is a Go-based system designed to provide a unified push notification service for mobile applications. It supports multiple platforms including Google Cloud Messaging (GCM) for Android, Firebase Cloud Messaging (FCM) for Android, Apple Push Notification Service (APNS) for iOS, and Amazon Device Messaging (ADM) for Kindle tablets. It requires a running Redis server with persistence enabled. ```Go // uniqush-push is a Go-based system. // It abstracts the APIs of various push services like GCM, FCM, APNS, and ADM. // Requires a Redis server for data storage. // Communication is via RESTful APIs over HTTP. ``` -------------------------------- ### Invalid PSP Removal Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Automatically removes invalid Push Service Providers (PSPs) when they are detected. ```APIDOC Provider Management: Invalid PSPs are automatically removed upon detection. ``` -------------------------------- ### Error Message Detail Improvement Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Adds more details to error messages to aid in debugging and troubleshooting. ```APIDOC Error Handling: Error messages now include more detailed information. ``` -------------------------------- ### Uniqush-push 2.6.0: APNS Worker Pool Configuration Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md The APNS worker pool size for the binary API in uniqush-push 2.6.0 is now configurable at runtime. This setting controls the number of concurrent encrypted TCP connections to APNS per active APNS Push Service Provider, with a default of 13 and a maximum of 50. ```Go - 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. ``` -------------------------------- ### Response Format Change to JSON Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Changes the response format for most APIs from logs to JSON. This enables reliable parsing of results and errors but will break clients parsing the old log format. ```APIDOC API Response Format: Changed from logs to JSON for most APIs. Breaking Change: Clients parsing the old log format will need to be updated. ``` -------------------------------- ### Delivery Point Modification Feedback Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Adds feedback to indicate whether a delivery point was modified during a push operation. ```APIDOC Push Operation Feedback: Indicates if a delivery point was modified. ``` -------------------------------- ### Unescaped Payloads for GCM and FCM Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Uses unescaped payloads for GCM and FCM, allowing for larger payloads by avoiding the escaping of characters like '<' and '>'. ```APIDOC GCM/FCM Configuration: Payloads are sent unescaped. Allows for larger payloads by not escaping characters like '<' and '>'. ``` -------------------------------- ### APNS Payload Size Increase Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Increases the maximum payload size for APNS to 2048 bytes. Also, removes Go's default HTML escaping for APNS payloads, allowing characters like '"' to be rendered correctly. ```APIDOC APNS Configuration: Maximum payload size: 2048 bytes. Default HTML escaping for JSON payloads is removed. ``` -------------------------------- ### Uniqush-push 2.6.0: GCM to FCM Endpoint Update Source: https://github.com/uniqush/uniqush-push/blob/master/NEWS.md Updates the Google Cloud Messaging (GCM) push URL in uniqush-push 2.6.0 to the HTTPS endpoint `https://fcm.googleapis.com/fcm/`. This change is backward compatible for existing GCM applications, as the old URL stopped working in April 2019. ```Go Maintenance: Update GCM push URL to the equivalent https://fcm.googleapis.com/fcm/ endpoint (#210) Applications using GCM are unaffected by this change. (The old URL stop working in April 2019) ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.