## 10.0.1
*October 23, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Remove redundant string joining in subscription logging. |
## 10.0.0
*October 21, 2025*
| Type | Changes |
|------|----------|
| **Added** | • BREAKING CHANGES: The static `log` and `logLog` properties have been removed from the PubNub instance. You can now attach a logger instance via the PubNub initializer instead.<br/>• BREAKING CHANGES: Logging methods such as `debug`, `warning`, etc, are no longer public. They are now internal as part of the logging encapsulation improvements.<br/>• BREAKING CHANGES: The `LogWriter` protocol method signature has been refined to accept a `LogMessage` object representing the logged content. It now also takes a `LogMetadata` parameter, allowing logging decisions to be made without evaluating the message itself.<br/>• BREAKING CHANGES: The `HereNow` method now returns a maximum of 1,000 occupants per channel. Previously, it would return all occupants regardless of count. If you have channels with more than 1,000 occupants, you must use pagination to retrieve the complete list. |
## 9.3.5
*October 16, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Update underlying string values for `PubNub.PushService`. This change updates .fcm to return "fcm" instead of "gcm", while the deprecated .gcm continues to return "gcm" for backward compatibility. |
## 9.3.4
*September 15, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Handle missing `limit` and `next` parameters in the `listFiles(channel:limit:next:custom:completion:)` method. |
## 9.3.3
*August 7, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • APM libraries crash fix: Removed `deinit` methods that were calling `session.invalidateAndCancel()` from `PresenceEffectFactory` and `SubscribeEffectFactory` to prevent race conditions with Application Performance Monitoring libraries. Session cleanup now happens exclusively in [HTTPSession.deinit](https://github.com/pubnub/swift/blob/9.3.2/Sources/PubNub/Networking/HTTPSession.swift#L96-L99), which ensures request cancellation before invalidation. This prevents crashes from occurring inside APM libraries when they intercept network operations during session invalidation. |
## 9.3.2
*August 6, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Implement missing token parsing logic in KMP layer (internal use). |
## 9.3.1
*July 31, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix the issue with recursive locking introduced in 9.3.0 when disposing a SubscriptionSet. |
## 9.3.0
*July 29, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add the ability to subscribe to presence channels only, without their main counterparts. |
## 9.2.3
*July 29, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix WeakBox hash stability. |
## 9.2.2
*July 17, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Add a wrapper around the reconnecting method for KMP (internal use). |
## 9.2.1
*June 20, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Add missing heartbeat call when changing channels or channel groups. |
## 9.2.0
*May 15, 2025*
| Type | Changes |
|------|----------|
| **Added** | • The `encryptStream(from:)` convenience method is designed to encrypt a local file. It eliminates the need for the caller to provide an `InputStream` and its content length - these are handled internally. You only need to pass a local file URL. |
## 9.1.0
*May 13, 2025*
| Type | Changes |
|------|----------|
| **Added** | • The `encrypt(stream:contentLength:)` method in `CryptoModule` now returns an `EncryptedStreamResult` containing both the encrypted stream and its total content length.<br/>• The new `decryptStream(from:to:)` method in CryptoModule simplifies file decryption by automatically handling low-level details, in contrast to `decrypt(stream:contentLength:to:)`. Instead of manually creating an InputStream and specifying the content length, you now only need to provide the source and destination URLs. |
## 9.0.1
*March 20, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Include endpoint error message in PubNubError's `details` property.<br/>• Defer computing the textual representation of EventEngine's current and previous states until needed. |
## 9.0.0
*March 4, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add `OSLogWriter` as the recommended `LogWriter` to use.<br/>• Refine `LogWriter` protocol signature to support built-in `Logger` from the `os` framework.<br/>• Enhance object descriptions with `CustomStringConvertible`.<br/>• Add explanatory documentation for debug-level logging messages. |
## 8.3.1
*January 24, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix the issue where the request's completion handler is not invoked in certain scenarios. |
## 8.3.0
*January 20, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add `ETag` support for setting Channel and User metadata. |
## 8.2.5
*January 16, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix the crash issue caused by multiple accesses to the `state` property in multithreaded scenarios. |
## 8.2.4
*January 10, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix the issue of passing an invalid value for the `storeTTL` parameter (internal use).<br/>• Handle `shouldCompress` parameter (internal use). |
## 8.2.3
*January 3, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Handle all possible values for the `include` field in the KMP layer (internal usage). |
## 8.2.2
*December 11, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix excessive memory usage in the high-volume messages use case.<br/>• Add missing `customMessageType` in `PubNubFileEvent`. |
## 8.2.1
*December 9, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add support for `customMessageType` in the KMP layer (internal usage). |
## 8.2.0
*December 4, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add support for the Membership `type` field.<br/>• Deprecate methods containing `uuid` parameter, introduce new versions.<br/>• Deprecate methods containing `include` parameter of `Bool` type, introduce new versions.<br/>• Deprecate `remove(channel:custom:completion:)`, introduce new version .<br/>• Replace `PubNubUUIDMetadata` with `PubNubUserMetadata`.<br/>• Replace `PubNubUUIDMetadataBase` with `PubNubUserMetadataBase`.<br/>• Add an alias for backward compatibility with the customer code using `PubNubUUIDMetadata`.<br/>• Add an alias for backward compatibility with the customer code using `PubNubUUIDMetadataBase`.<br/>• Replace `PubNubUUIDMetadataChangeset` with `PubNubUserMetadataChangeset`.<br/>• Add an alias for backward compatibility with the customer code using `PubNubUUIDMetadataChangeset`. |
## 8.1.0
*November 18, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add custom message type support for the following APIs: publish, signal, share file, subscribe, and history. |
## 8.0.1
*October 17, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add getToken() method for KMPPubNub (internal usage). |
## 8.0.0
*September 23, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Replace module name with `PubNubSDK` due to compiler error when a public type shares the same name as the module.<br/>• Add new `subscriptionChanged(channels, groups)` connection status and remove previously deprecated `connecting` and `reconnecting` cases.<br/>• Remove previously deprecated `.legacyExponential(base, scale, maxDelay)` reconnection policy.<br/>• Added additional fields to fetch in `PubNub.MembershipInclude` and `PubNub.MemberInclude`.<br/>• Set default `AutomaticRetry` for retrying subscribe requests with exponential reconnection policy.<br/>• Add support for attaching additional listeners to `Subscription` and `SubscriptionSet`. |
| **Fixed** | • Ensure that subscriptions are always internally stored as weak references. |
## 7.3.3
*September 13, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Added synchronized access inside `WeakSet` and for global subscriptions. |
## 7.3.2
*July 22, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Add missing public initializers for `EncryptedData` and `EncryptedStreamData`. |
## 7.3.1
*June 18, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Calling .leave request in missing cases. |
## 7.3.0
*June 12, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Adjusting to FCM HTTP v1 API. |
## 7.2.1
*May 9, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Adding support for visionOS. |
| **Fixed** | • Updating EventEngine dependencies after adding a new listener. |
## 7.2.0
*April 16, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Adding PrivacyInfo.xcprivacy.<br/>• Moving retry logic away from EventEngine. |
| **Modified** | • Removing SubscribeSessionFactory with SubscriptionConfiguration.<br/>• Making SubscriptionSession class an internal. |
## 7.1.0
*March 18, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Preventing disconnection when subscribing via `PubNub` to a channel that was already subscribed to.<br/>• Fixes for computing a hash value in `CryptoModule`. |
## 7.0.0
*February 21, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Adding the new Listeners API.<br/>• Enabling EventEngine by default. |
## 6.3.0
*January 22, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Introducing Subscribe & Presence EventEngine. |
## 6.2.3
*November 28, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Handle unencrypted message while getting it with CryptoModule configured. |
## 6.2.2
*October 30, 2023*
| Type | Changes |
|------|----------|
| **Modified** | • Update license information. |
## 6.2.1
*October 23, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Align on namings across all supported platforms. |
## v6.2.0
*October 16, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add CryptorModule that allows configuring SDK to encrypt and decrypt messages. |
| **Fixed** | • Improved security of crypto implementation by adding AES-CBC cryptor. |
## 6.1.0
*August 30, 2023*
| Type | Changes |
|------|----------|
| **Added** | • To make client integration more flexible for different projects setup, the `$PubNubAsStaticFramework` flag has been added to `PubNubSwift.podspec`. With `$PubNubAsStaticFramework = true` in `Podfile` SDK will be integrated as a static library. |
## 6.0.5
*May 18, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Uppercasing of the `excluded_devices` field to match the format expected by the REST API. |
## 6.0.4
*March 16, 2023*
| Type | Changes |
|------|----------|
| **Modified** | • Change the settings for subscribe `URLSession` and limit the number of concurrent connections per host.<br/>• Call presence leave using subscribe `URLSession` to avoid potential presence race of condition. |
## 6.0.3
*January 4, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix issue because of which listener wasn't `deinit` even when reference on it has been nullified. |
## 6.0.2
*December 12, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix memory leak within Subscription Session. |
| **Modified** | • Use specific GitHub action for `.pubnub.yml` validation. |
## 6.0.1
*September 5, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix issue because of which `Example` project didn't built with missing `swift` reference error.<br/>• Fix issue because of which Carthage was unable to build caused by schemas without targets. |
## 6.0.0
*July 5, 2022*
| Type | Changes |
|------|----------|
| **Added** | • VSP methods and models have been exposed via modules on the PubNub instance.<br/>• `FlatJSONCodable` replaces `[String: JSONCodableScalar]` inside the VSP models. |
| **Modified** | • PubNub instances has been changed from a `struct` to a `class`.<br/>• `HTTPSession` has been made public for easier per-request overrides of the Network Session. |
## 5.1.0
*February 2, 2022*
| Type | Changes |
|------|----------|
| **Added** | • Add affected channels and groups under `affected` resources list. |
## 5.0.1
*January 19, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix issue because of which access token not updated in subscription session. |
## 5.0.0
*January 12, 2022*
| Type | Changes |
|------|----------|
| **Modified** | • BREAKING CHANGES: Disable automated `uuid` generation and make it mandatory to specify during PubNubConfiguration instance creation. |
## 4.1.2
*November 8, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Make `name` field optional for channel and UUID metadata. |
## 4.1.1
*November 5, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix issue because of which request with applied mutators not used. |
## 4.1.0
*September 16, 2021*
| Type | Changes |
|------|----------|
| **Added** | • Add ability to parse permissions from token provided by servers.<br/>• Make it possible to add component identifiers for requests. |
| **Fixed** | • Fix `bufferTooSmall` and make temporary buffers for files encryption / decryption adaptive in size to provided stream buffer size.<br/>• Don't perform HEX-encoding of `Data` with FCM token which should be used as-is. |
| **Modified** | • Use `token` instead of `authKey` (if specified) for query `auth`. |
## v4.0.2
*August 3, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Memory leaks with captured request in subscription loop. |
## v4.0.1
*July 7, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Subscribe Factory will hash additional values when comparing sessions<br/>• Adding APNS2 Devices will correctly return the devices that were added.<br/>• Per request configuration changes will correct be applied to the outgoing request. |
## v4.0.0
*June 8, 2021*
| Type | Changes |
|------|----------|
| **Added** | • BREAKING CHANGE: Crypto by default initialized with `randomizeIV` set to `true` which will encrypt / decrypt data with publish / subscribe / history API calls using randomized initialization vector |
| **Modified** | • Add new `sdks` section to `.pubnub.yml` with information about available artifacts and distribution variants |
## v3.1.3
*May 28, 2021*
| Type | Changes |
|------|----------|
| **Modified** | • Custom error messages (from functions) will be included inside PubNub Error Details |
| **Fixed** | • Fix Coding issue when setting UUIDMetadata objects |
## v3.1.2
*April 30, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Subscribe Message events will have the correct messageType flag |
## v3.1.1
*March 12, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • FileEvents will contain the file name stored with PubNub and not the local filename (if different) |
| **Modified** | • PubNub model objects are now Hashable |
## v3.1.0
*October 6, 2020*
| Type | Changes |
|------|----------|
| **Added** | • CryptoStream and CryptoInputStream can be used to perform crypto operations on streams of data<br/>• File upload/download support<br/>• Added includeUUID and includeMessageType flags to History |
| **Modified** | • History will now has a default limit of 100 for single-channel and 25 for multichannel requests<br/>• Removed depcreated platform version support to align with Xcode 12 warnings |
## v3.0.1
*June 25, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed crash when performing many requests simulataneously |
## v3.0.0
*June 17, 2020*
| Type | Changes |
|------|----------|
| **Added** | • Added Objects v2 API and removed Objects v1 API |
| **Modified** | • Replace PubNub API response objects with primitives or prtocols<br/>• Replace Subscribe Event objects with primitives or prtocols<br/>• Subscribe Listener now has a batched event handler<br/>• Renamed several APIs to align naming across all APIs<br/>• PubNubConfiguration properites can all be set through default init<br/>• Reduced access control of objects that are not public facing<br/>• Request level configuration available for most PubNub APIs |
## v2.5.4
*June 25, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed crash when performing many requests simulataneously |
## v2.5.3
*June 9, 2020*
| Type | Changes |
|------|----------|
| **Modified** | • Payload and FCMTarget fields are now optional for PubNubPushMessage |
| **Fixed** | • Fixed an issue where nested presence state could be published |
## v2.5.2
*June 4, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Resolves possible memory leaks related to listeners<br/>• Responds with the appropriate error when a Signal payload is too large<br/>• Added PAM support to Channels for Channel-Group endpoint<br/>• Invalid JSON will attempt to be parsed for the next Timetoken, and if successful will no interrupt the current subscription loop |
## v2.5.1
*May 7, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Add `uuid` and `channel` to the Message Action Event<br/>• Fixed typos inside log messages |
| **Modified** | • AnyJSON dictionaries can now perform a rawValue subscript that will return the underlying Any object |
## v2.5.0
*March 26, 2020*
| Type | Changes |
|------|----------|
| **Modified** | • Message Subscribe Events and Message History will now return the decrypted `Data` blob in the event it was decrypted, but couldn't be stringified<br/>• Crypto will now accept the type of `String.Encoding` to be used when converting between `Data` and `String`<br/>• Object API fetch|create|update methods with generic response objects have been added<br/>• Object API fetch|create|update methods with protocol response objects have been added<br/>• Object types User|Space|Member|Membership can now convert the underlying type using `transocde(into:)` |
| **Fixed** | • Corrected the access control level of `MembershipIdentifiable` properties<br/>• User/Space Subscription Update events wouldn't properly handle partial object updates |
## v2.4.2
*March 12, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Make `region` optional during `originTimetoken` parsing and set to 0 by default |
## v2.4.1
*January 24, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • A `reconnecting` event will be emitted once subscription starts retrying |
## v2.4.0
*January 17, 2020*
| Type | Changes |
|------|----------|
| **Added** | • PAM Token Management System added to manage Object API auth tokens |
| **Fixed** | • HereNow Presence will now work when only groups are being used |
## v2.3.3
*January 7, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Enable ability to send auth token on Presence endpoints |
## v2.3.2
*December 9, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Subscription requests will now properly cancel when updating existing subscription loop |
## v2.3.1
*December 3, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Duplicate subscription will no longer start if a current subscription is connecting<br/>• Added missing APNS2 pubnub config field to publish payload object<br/>• Fixed Coding issue when a scalar value is used for APNS2 publish payload object<br/>• Subscription will no long attempt to automatically reconnect after an unexpected disconnet |
## v2.3.0
*November 25, 2019*
| Type | Changes |
|------|----------|
| **Added** | • Added convenience objects for creating push publish messages<br/>• List/Add/Remove/Remove-All of APNS2 push channels for devices |
| **Fixed** | • `Channel` property on push responses is not public |
## v2.2.0
*November 14, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • `Timetoken` was changed from an Int64 to UInt64 to avoid negative timetoken values<br/>• Removed `PubNubRouter`, and replaced with multiple service specific `HTTPRouter` implementations<br/>• Removed `Endpoint` type<br/>• Renamed `Response` to `EndpointResponse`<br/>• Removed `HTTPHeader` & `HTTPHeader`, and replaced with `[String: String]`<br/>• Renamed `Session` to `HTTPSession` and made it an internal type<br/>• Created `RequestReplaceable` and made `Request` an internal type |
## v2.1.2
*November 12, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • PubNub Info.plist is now included on Cocoapod and Carthage deployed builds |
## v2.1.1
*November 6, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Encoding `JSONCodableScalar` values will now properly encode to a single value<br/>• Membership APIs no longer use hardcoded subscribe key |
## v2.1.0
*November 1, 2019*
| Type | Changes |
|------|----------|
| **Added** | • Added support for Message Action Subscription Listener<br/>• Fetch previously published Message Actions and Messages via History APIs<br/>• Fetch previously published Message Actions on a channel<br/>• Add/Remove Message Actions on previously published messages |
## v2.0.2
*October 25, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Add/Update documentation for public classes, methods, and properties |
## v2.0.1
*October 21, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Update the version inside the podspec file |
## v2.0.0
*October 17, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Subscribe/Unsubscribe will now properly cancel/restart the subscribe loop when completely stoppping cycle<br/>• Fixed memory leak inside Hearthbeat response handler<br/>• Fixed memory leak inside SubscriptionSessionFactory |
| **Modified** | • PNError enum has been replaced by PubNubError struct to allow for greater flexibility in error handling and recognition<br/>• AnyJSON as been replaced by the JSONCodable protocol for method parameters allowing any conforming object to be passed<br/>• Removed initialized and cancelled as ConnectionsStatus options<br/>• Response error events due to cancellations will now be suppresed by default by the SubscriptionListener. They can be toggled on using a the `supressCancellationErrors` property |
| **Added** | • Added subscription event listener for subscribe/unsubscribe changes |
## v1.2.1
*October 15, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Made the subscription token a property on the listener for cleaner setup |
## v1.2.0
*October 8, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Removed development dependencies from being included in Swift Package imports<br/>• Added meta event listener covering all event types |
| **Added** | • Support for Objects added |
| **Fixed** | • Changed `ConnectionStatus.isActive` and `ConnectionStatus.isConnected` access control to public<br/>• Fixed typo in PubNub.Push method parameters<br/>• Add support for Global HereNow<br/>• Fixed HereNow stateless response decoding<br/>• Fixed HereNow single channel response decoding |
## v1.1.0
*September 3, 2019*
| Type | Changes |
|------|----------|
| **Added** | • Add support for Signal Subscription Listener<br/>• Add support for Signal publish API |
| **Fixed** | • Fixed crash attempting to create URLSessionTasks from invalidated URLSession<br/>• Default Encryption/Decryption methodology now properly aligns with other SDKs<br/>• `?` characters inside URL query parameters will now be properly url encoded |
| **Modified** | • Exposed add(listener:) to be called by PubNub instance directly |
## v1.0.0
*August 23, 2019*
| Type | Changes |
|------|----------|
| **Added** | • Initial release of native Swift PubNub SDK |
| Fixed | - Remove redundant string joining in subscription logging.
|
| Added | - BREAKING CHANGES: The static
log and logLog properties have been removed from the PubNub instance. You can now attach a logger instance via the PubNub initializer instead. - BREAKING CHANGES: Logging methods such as
debug, warning, etc, are no longer public. They are now internal as part of the logging encapsulation improvements. - BREAKING CHANGES: The
LogWriter protocol method signature has been refined to accept a LogMessage object representing the logged content. It now also takes a LogMetadata parameter, allowing logging decisions to be made without evaluating the message itself. - BREAKING CHANGES: The
HereNow method now returns a maximum of 1,000 occupants per channel. Previously, it would return all occupants regardless of count. If you have channels with more than 1,000 occupants, you must use pagination to retrieve the complete list.
|
| Fixed | - Update underlying string values for
PubNub.PushService. This change updates .fcm to return "fcm" instead of "gcm", while the deprecated .gcm continues to return "gcm" for backward compatibility.
|
| Fixed | - Handle missing
limit and next parameters in the listFiles(channel:limit:next:custom:completion:) method.
|
| Fixed | - APM libraries crash fix: Removed
deinit methods that were calling session.invalidateAndCancel() from PresenceEffectFactory and SubscribeEffectFactory to prevent race conditions with Application Performance Monitoring libraries. Session cleanup now happens exclusively in [HTTPSession.deinit](https://github.com/pubnub/swift/blob/9.3.2/Sources/PubNub/Networking/HTTPSession.swift#L96-L99), which ensures request cancellation before invalidation. This prevents crashes from occurring inside APM libraries when they intercept network operations during session invalidation.
|
| Fixed | - Implement missing token parsing logic in KMP layer (internal use).
|
| Fixed | - Fix the issue with recursive locking introduced in 9.3.0 when disposing a SubscriptionSet.
|
| Added | - Add the ability to subscribe to presence channels only, without their main counterparts.
|
| Fixed | - Fix WeakBox hash stability.
|
| Fixed | - Add a wrapper around the reconnecting method for KMP (internal use).
|
| Fixed | - Add missing heartbeat call when changing channels or channel groups.
|
| Added | - The
encryptStream(from:) convenience method is designed to encrypt a local file. It eliminates the need for the caller to provide an InputStream and its content length - these are handled internally. You only need to pass a local file URL.
|
| Added | - The
encrypt(stream:contentLength:) method in CryptoModule now returns an EncryptedStreamResult containing both the encrypted stream and its total content length. - The new
decryptStream(from:to:) method in CryptoModule simplifies file decryption by automatically handling low-level details, in contrast to decrypt(stream:contentLength:to:). Instead of manually creating an InputStream and specifying the content length, you now only need to provide the source and destination URLs.
|
| Fixed | - Include endpoint error message in PubNubError's
details property. - Defer computing the textual representation of EventEngine's current and previous states until needed.
|
| Added | - Add
OSLogWriter as the recommended LogWriter to use. - Refine
LogWriter protocol signature to support built-in Logger from the os framework. - Enhance object descriptions with
CustomStringConvertible. - Add explanatory documentation for debug-level logging messages.
|
| Fixed | - Fix the issue where the request's completion handler is not invoked in certain scenarios.
|
| Added | - Add
ETag support for setting Channel and User metadata.
|
| Fixed | - Fix the crash issue caused by multiple accesses to the
state property in multithreaded scenarios.
|
| Fixed | - Fix the issue of passing an invalid value for the
storeTTL parameter (internal use). - Handle
shouldCompress parameter (internal use).
|
| Added | - Handle all possible values for the
include field in the KMP layer (internal usage).
|
| Fixed | - Fix excessive memory usage in the high-volume messages use case.
- Add missing
customMessageType in PubNubFileEvent.
|
| Added | - Add support for
customMessageType in the KMP layer (internal usage).
|
| Added | - Add support for the Membership
type field. - Deprecate methods containing
uuid parameter, introduce new versions. - Deprecate methods containing
include parameter of Bool type, introduce new versions. - Deprecate
remove(channel:custom:completion:), introduce new version . - Replace
PubNubUUIDMetadata with PubNubUserMetadata. - Replace
PubNubUUIDMetadataBase with PubNubUserMetadataBase. - Add an alias for backward compatibility with the customer code using
PubNubUUIDMetadata. - Add an alias for backward compatibility with the customer code using
PubNubUUIDMetadataBase. - Replace
PubNubUUIDMetadataChangeset with PubNubUserMetadataChangeset. - Add an alias for backward compatibility with the customer code using
PubNubUUIDMetadataChangeset.
|
| Added | - Add custom message type support for the following APIs: publish, signal, share file, subscribe, and history.
|
| Added | - Add getToken() method for KMPPubNub (internal usage).
|
| Added | - Replace module name with
PubNubSDK due to compiler error when a public type shares the same name as the module. - Add new
subscriptionChanged(channels, groups) connection status and remove previously deprecated connecting and reconnecting cases. - Remove previously deprecated
.legacyExponential(base, scale, maxDelay) reconnection policy. - Added additional fields to fetch in
PubNub.MembershipInclude and PubNub.MemberInclude. - Set default
AutomaticRetry for retrying subscribe requests with exponential reconnection policy. - Add support for attaching additional listeners to
Subscription and SubscriptionSet.
|
| Fixed | - Ensure that subscriptions are always internally stored as weak references.
|
| Fixed | - Added synchronized access inside
WeakSet and for global subscriptions.
|
| Fixed | - Add missing public initializers for
EncryptedData and EncryptedStreamData.
|
| Fixed | - Calling .leave request in missing cases.
|
| Added | - Adjusting to FCM HTTP v1 API.
|
| Added | - Adding support for visionOS.
|
| Fixed | - Updating EventEngine dependencies after adding a new listener.
|
| Added | - Adding PrivacyInfo.xcprivacy.
- Moving retry logic away from EventEngine.
|
| Modified | - Removing SubscribeSessionFactory with SubscriptionConfiguration.
- Making SubscriptionSession class an internal.
|
| Fixed | - Preventing disconnection when subscribing via
PubNub to a channel that was already subscribed to. - Fixes for computing a hash value in
CryptoModule.
|
| Added | - Adding the new Listeners API.
- Enabling EventEngine by default.
|
| Added | - Introducing Subscribe & Presence EventEngine.
|
| Fixed | - Handle unencrypted message while getting it with CryptoModule configured.
|
| Modified | - Update license information.
|
| Fixed | - Align on namings across all supported platforms.
|
| Added | - Add CryptorModule that allows configuring SDK to encrypt and decrypt messages.
|
| Fixed | - Improved security of crypto implementation by adding AES-CBC cryptor.
|
| Added | - To make client integration more flexible for different projects setup, the
$PubNubAsStaticFramework flag has been added to PubNubSwift.podspec. With $PubNubAsStaticFramework = true in Podfile SDK will be integrated as a static library.
|
| Fixed | - Uppercasing of the
excluded_devices field to match the format expected by the REST API.
|
| Modified | - Change the settings for subscribe
URLSession and limit the number of concurrent connections per host. - Call presence leave using subscribe
URLSession to avoid potential presence race of condition.
|
| Fixed | - Fix issue because of which listener wasn't
deinit even when reference on it has been nullified.
|
| Fixed | - Fix memory leak within Subscription Session.
|
| Modified | - Use specific GitHub action for
.pubnub.yml validation.
|
| Fixed | - Fix issue because of which
Example project didn't built with missing swift reference error. - Fix issue because of which Carthage was unable to build caused by schemas without targets.
|
| Added | - VSP methods and models have been exposed via modules on the PubNub instance.
FlatJSONCodable replaces [String: JSONCodableScalar] inside the VSP models.
|
| Modified | - PubNub instances has been changed from a
struct to a class. HTTPSession has been made public for easier per-request overrides of the Network Session.
|
| Added | - Add affected channels and groups under
affected resources list.
|
| Fixed | - Fix issue because of which access token not updated in subscription session.
|
| Modified | - BREAKING CHANGES: Disable automated
uuid generation and make it mandatory to specify during PubNubConfiguration instance creation.
|
| Fixed | - Make
name field optional for channel and UUID metadata.
|
| Fixed | - Fix issue because of which request with applied mutators not used.
|
| Added | - Add ability to parse permissions from token provided by servers.
- Make it possible to add component identifiers for requests.
|
| Fixed | - Fix
bufferTooSmall and make temporary buffers for files encryption / decryption adaptive in size to provided stream buffer size. - Don't perform HEX-encoding of
Data with FCM token which should be used as-is.
|
| Modified | - Use
token instead of authKey (if specified) for query auth.
|
| Fixed | - Memory leaks with captured request in subscription loop.
|
| Fixed | - Subscribe Factory will hash additional values when comparing sessions
- Adding APNS2 Devices will correctly return the devices that were added.
- Per request configuration changes will correct be applied to the outgoing request.
|
| Added | - BREAKING CHANGE: Crypto by default initialized with
randomizeIV set to true which will encrypt / decrypt data with publish / subscribe / history API calls using randomized initialization vector
|
| Modified | - Add new
sdks section to .pubnub.yml with information about available artifacts and distribution variants
|
| Modified | - Custom error messages (from functions) will be included inside PubNub Error Details
|
| Fixed | - Fix Coding issue when setting UUIDMetadata objects
|
| Fixed | - Subscribe Message events will have the correct messageType flag
|
| Fixed | - FileEvents will contain the file name stored with PubNub and not the local filename (if different)
|
| Modified | - PubNub model objects are now Hashable
|
| Added | - CryptoStream and CryptoInputStream can be used to perform crypto operations on streams of data
- File upload/download support
- Added includeUUID and includeMessageType flags to History
|
| Modified | - History will now has a default limit of 100 for single-channel and 25 for multichannel requests
- Removed depcreated platform version support to align with Xcode 12 warnings
|
| Fixed | - Fixed crash when performing many requests simulataneously
|
| Added | - Added Objects v2 API and removed Objects v1 API
|
| Modified | - Replace PubNub API response objects with primitives or prtocols
- Replace Subscribe Event objects with primitives or prtocols
- Subscribe Listener now has a batched event handler
- Renamed several APIs to align naming across all APIs
- PubNubConfiguration properites can all be set through default init
- Reduced access control of objects that are not public facing
- Request level configuration available for most PubNub APIs
|
| Fixed | - Fixed crash when performing many requests simulataneously
|
| Modified | - Payload and FCMTarget fields are now optional for PubNubPushMessage
|
| Fixed | - Fixed an issue where nested presence state could be published
|
| Fixed | - Resolves possible memory leaks related to listeners
- Responds with the appropriate error when a Signal payload is too large
- Added PAM support to Channels for Channel-Group endpoint
- Invalid JSON will attempt to be parsed for the next Timetoken, and if successful will no interrupt the current subscription loop
|
| Fixed | - Add
uuid and channel to the Message Action Event - Fixed typos inside log messages
|
| Modified | - AnyJSON dictionaries can now perform a rawValue subscript that will return the underlying Any object
|
| Modified | - Message Subscribe Events and Message History will now return the decrypted
Data blob in the event it was decrypted, but couldn't be stringified - Crypto will now accept the type of
String.Encoding to be used when converting between Data and String - Object API fetch|create|update methods with generic response objects have been added
- Object API fetch|create|update methods with protocol response objects have been added
- Object types User|Space|Member|Membership can now convert the underlying type using
transocde(into:)
|
| Fixed | - Corrected the access control level of
MembershipIdentifiable properties - User/Space Subscription Update events wouldn't properly handle partial object updates
|
| Fixed | - Make
region optional during originTimetoken parsing and set to 0 by default
|
| Fixed | - A
reconnecting event will be emitted once subscription starts retrying
|
| Added | - PAM Token Management System added to manage Object API auth tokens
|
| Fixed | - HereNow Presence will now work when only groups are being used
|
| Fixed | - Enable ability to send auth token on Presence endpoints
|
| Fixed | - Subscription requests will now properly cancel when updating existing subscription loop
|
| Fixed | - Duplicate subscription will no longer start if a current subscription is connecting
- Added missing APNS2 pubnub config field to publish payload object
- Fixed Coding issue when a scalar value is used for APNS2 publish payload object
- Subscription will no long attempt to automatically reconnect after an unexpected disconnet
|
| Added | - Added convenience objects for creating push publish messages
- List/Add/Remove/Remove-All of APNS2 push channels for devices
|
| Fixed | Channel property on push responses is not public
|
| Modified | Timetoken was changed from an Int64 to UInt64 to avoid negative timetoken values- Removed
PubNubRouter, and replaced with multiple service specific HTTPRouter implementations - Removed
Endpoint type - Renamed
Response to EndpointResponse - Removed
HTTPHeader & HTTPHeader, and replaced with [String: String] - Renamed
Session to HTTPSession and made it an internal type - Created
RequestReplaceable and made Request an internal type
|
| Fixed | - PubNub Info.plist is now included on Cocoapod and Carthage deployed builds
|
| Fixed | - Encoding
JSONCodableScalar values will now properly encode to a single value - Membership APIs no longer use hardcoded subscribe key
|
| Added | - Added support for Message Action Subscription Listener
- Fetch previously published Message Actions and Messages via History APIs
- Fetch previously published Message Actions on a channel
- Add/Remove Message Actions on previously published messages
|
| Fixed | - Add/Update documentation for public classes, methods, and properties
|
| Fixed | - Update the version inside the podspec file
|
| Fixed | - Subscribe/Unsubscribe will now properly cancel/restart the subscribe loop when completely stoppping cycle
- Fixed memory leak inside Hearthbeat response handler
- Fixed memory leak inside SubscriptionSessionFactory
|
| Modified | - PNError enum has been replaced by PubNubError struct to allow for greater flexibility in error handling and recognition
- AnyJSON as been replaced by the JSONCodable protocol for method parameters allowing any conforming object to be passed
- Removed initialized and cancelled as ConnectionsStatus options
- Response error events due to cancellations will now be suppresed by default by the SubscriptionListener. They can be toggled on using a the
supressCancellationErrors property
|
| Added | - Added subscription event listener for subscribe/unsubscribe changes
|
| Modified | - Made the subscription token a property on the listener for cleaner setup
|
| Modified | - Removed development dependencies from being included in Swift Package imports
- Added meta event listener covering all event types
|
| Added | - Support for Objects added
|
| Fixed | - Changed
ConnectionStatus.isActive and ConnectionStatus.isConnected access control to public - Fixed typo in PubNub.Push method parameters
- Add support for Global HereNow
- Fixed HereNow stateless response decoding
- Fixed HereNow single channel response decoding
|
| Added | - Add support for Signal Subscription Listener
- Add support for Signal publish API
|
| Fixed | - Fixed crash attempting to create URLSessionTasks from invalidated URLSession
- Default Encryption/Decryption methodology now properly aligns with other SDKs
? characters inside URL query parameters will now be properly url encoded
|
| Modified | - Exposed add(listener:) to be called by PubNub instance directly
|
| Added | - Initial release of native Swift PubNub SDK
|