July 08 2024
- Fix issue because of which wrong request timeout has been used.
- Fix issue with
PNSubscribeCursorData
which should have an optionalregion
to handle user timetoken in received real-time messages.
June 27 2024
- Decoder to map server response directly to the data models.
- Configurable request objects require less convenience methods to interact with PubNub REST API.
- Network layer rewritten as module.
June 12 2024
- Adjusting to FCM HTTP v1 API.
April 30 2024
- Match
include
folder content to theimport
in source code.
April 16 2024
- Adding PrivacyInfo.xcprivacy.
December 19 2023
- Add the ability to set automatic request retry configuration in
PNConfiguration
.
October 30 2023
- Update license information.
October 16 2023
- Add a crypto module with a set of implemented cryptors.
- Mark
uuid
as deprecated configuration property. - Fix warnings after project settings update.
December 13 2022
- Serialise access to previously created session configuration objects from different threads.
December 09 2022
- Fix issue because of which message de-duplication code leaked memory.
September 06 2022
- Fix the issue because of which
PNFilesManager
leaked each time when PubNub client was created.
March 11 2022
- Make it possible to use PubNub Objective-C SDK using SPM.
January 12 2022
- BREAKING CHANGES: Disable automated
uuid
generation and make it mandatory to specify during PNConfiguration instance creation.
September 22 2021
- Add method which allow to set or parse auth token.
June 9 2021
- Add download error checks in Files API integration tests to have ability investigate random test failure with data download on Travis.
- Add
arm64
architecture to pre-compiled PubNub SDK Framework bundles for their usage on Apple M1 enabled computers.
- Fix issue because of which null-able completion block wasn't properly verified and caused application crash.
- Fix compiler warnings on type mismatch.
March 16 2021
- Replace
os_unfair_lock
withpthread_mutex
to avoid cases whenos_unfair_lock_lock
called from same thread more than once.
March 9 2021
- BREAKING CHANGE: Add randomized initialization vector usage by default for data encryption / decryption in publish / subscribe / history API calls.
February 6 2021
- Add
heartbeat
tosubscribe
REST API call whenmanagePresenceListManually
is set to YES.
February 6 2021
- Fix
copyWithConfiguration:completion:
which sometime stuck because of long-poll subscribe.
February 4 2021
- Make
PNBasePublishRequest
header publicly visible. Addresses the following PRs from @dymv: #424. - Fix issue because of which subscriber reset heartbeat timer while in manual presence management mode.
November 16 2020
- Add new parameters to
Here Now
builder-based API to get presence information for list of channels or channel groups.
October 3 2020
- Add
timetoken
from file information publish call intoPNSendFileStatus
object.
September 26 2020
- Fix issue because of which
PNPublishSequence
metrics data migration caused application crash. - Fix subscription loop issue caused by broken bytes array with null-byte in it.
September 18 2020
- Increase default number of messages returned by History v3, when single channel passed, to 100 messages per single call.
September 10 2020
- Update code to ensure that persistent and in-memory storage accessed in thread-safe way.
- Fix issue because of which migrated data didn't placed at proper place.
August 13 2020
- Add
include_message_type
option to fetch messages and history with message actions APIs. - Add
include_uuid
option to fetch messages and history with message actions APIs.
- Replace content type, which is returned by server during upload url generation, using system capabilities to detect MIME type by file extension.
- Split current Keychain helper to two separate storage options: in-memory and Keychain. Keychain will be used when possible and in-memory for cases when Keychain not available and macOS.
- After Keychain reorganization publish sequence manager has been restructured to use dispatch queue instead of SpinLock.
August 1 2020
- Add same set of query parameters to download URL as any regular operation to PubNub service.
- Fix issue with files larger than 32 kilobytes.
July 28 2020
- Fix default issues after migration to publish requests objects usage because of which
replicate
andstore
has been reset tofalse
.
July 27 2020
- Add send file API support which allow encrypt (if configured) and upload file to
channel
. - Add download file API support which allow download file from
channel
and decrypt (if configured). - Add list files API support which allow retrieve information about files sent to
channel
. - Add delete file API support to permanently remove file from
channel
. - Add file message publish API which allow notify about new file upload completion (should be used to recover from internal publish error).
- Add new subscribe events listener to handle new files events.
- Add new methods to PNAES which allow to encrypt / decrypt file at local file system.
- Add new option for PubNub client configuration and PNAES methods to use random initialization vector instead of hard-coded when files / data is encrypted / decrypted.
June 19 2020
- Make device push tokens added to
excluded_devices
lowercase.
June 6 2020
- By default, all requests which is able to return multiple objects, will return their total count (corresponding
includeFields
flag is set).
- Renamed group of methods which is responsible for
channel
members management / audit.
May 29 2020
- Add simplified Objects API support with UUID and Channel metadata / membership management.
- Deprecate and replace old
PNObjectEventListener
protocol with new onePNEventsListener
. - Update tests which has been used for previous Objects API version to test simplified Objects.
May 18 2020
- Update
.pubnub.yml
features matrix with missing features.
- Don't create lowercase string when FCM device registration token provided to PubNub notifications API.
March 26 2020
- Remove line breaks which affect change log generator. Addresses the following PRs from @samiahmedsiddiqui: #423.
- Remove Fabric components from
PubNub.podspec
because they have been removed from SDK with latest release.
March 9 2020
- Add additional functionality which allow to filter out received Objects (memberships, members, spaces or users) by specified criteria.
- Add new parameters which allow specify criteria (list of field names with sort direction
:asc
/:desc
for each) order in which objects appear in response. - Add scripts which is responsible for SDK release roll out from tag in private repository.
- Presence state should set / fetch fail w/o actual request to server when list of channels / groups and uuid is missing.
- Increase covered up to 85% with integration tests on all functionality (75%) and unit tests on builder-pattern / request interface.
- Fix issue because of which
connected
interface didn't called completion block whenmanagePresenceListManually
is set toNO
. - Fix issue because of which
includeMetadata
andincludeMessageActions
flags has been swapped. - Fix issue because of which actual retry never happened in case if subscription failed because PAM reported that client with current
authKey
doesn't have access rights to channels / groups. - Fix issue which didn't reset subscribe time-token when
keepTimeTokenOnListChange
is set toNO
andtryCatchUpOnSubscriptionRestore
is set toYES
. - Remove 'macOS' from supported platforms in iOS Framework targets and rely on command-line specified flags to build Framework with Catalyst support.
December 5 2019
- Add support for new endpoint which allow register and use devices with APNS2.
- Add new interfaces (builder-based API also has been modified) which allow pass device push token / identifier (not only NSData) using specific push service type.
- Add class which simplify basic notifications composition for multiple platforms / providers at once.
- Expose utility class which allow to manage data in
Keychain
(iOS).
- Fix non-JSON response handling from
History
v2 endpoints when storage add-on not enabled for used keys.
November 25 2019
- Add proper Catalyst framework support with separate build target
XCFramework (Catalyst)
which is bundled with binaries which allow it to be used for: device / simulator and macOS.
- Change build scripts which now produce
XCFrameworks
with separate slices for device and simulator instead offat
binaries created withlipo
.
- Fix headers visibility in frameworks project.
October 8 2019
- Add Message Actions API support which allow to: add, remove and fetch previously added actions.
- Add new method to simple interface and argument to builder pattern interface which allow to fetch previously added actions and message metadata.
- Add new argument to history builder pattern to fetch message metadata.
- Add new callback to
PNObjectEventListener
to trackmessage actions
events.
- Enhance publish sequence manager performance by making save only if any change has been done.
August 30 2019
- Add missing import of Objects API interface to frameworks umbrella header.
August 27 2019
- Add support for Space Objects API.
- Add support for User Objects API.
- Add support for Membership / Member Objects API.
- Add new callback to
PNObjectEventListener
to trackspace
events. - Add new callback to
PNObjectEventListener
to trackuser
events. - Add new callback to
PNObjectEventListener
to trackmembership
events.
August 8 2019
- Add support for Signal API.
- Add new callback to
PNObjectEventListener
to tracksignal
events.
- Remove deprecated
stripMobilePayload
configuration option from SDK along with code, which used it. - Disable pipelining for requests.
- Fix crash which is caused by attempt to de-duplicate message which PubNub client wasn't able to decrypt with configured
cipherKey
.
July 15 2019
- Add macOS support for iOS frameworks.
June 27 2019
- Update outdated configuration object inline help documentation.
- Fix subscribe request timeout missing
reconnect
event. - Fix empty heartbeat value set to minimum on configuration copy.
June 17 2019
- Add ability to specify FCM token for APNS API.
- Fix system version parsing when OS language set to Japanese.
May 16 2019
- Add value wrapping around heartbeat 'value'.
- Separate tests project from main workspace.
- Fix universal Frameworks build script.
March 28 2019
- Resolve project warnings, which caused issues with Carthage framework build.
March 26 2019
- Fix builder API interface visibility for frameworks.
March 16 2019
- Move
Keychain
records update calls to secondary queue (sometimeKeychain
take too much time to update and block main queue).
- Fix message count result object header file visibility for frameworks.
March 11 2019
- Add ability to retrieve number of messages in specified channels using timetoken as reference date.
- Remove channel names sorting from utility class (because of which new API wasn't able to work properly).
November 13 2018
- Add ability to get / set presence state for multiple channel / groups (at once).
November 7 2018
- Add ability to set arbitrary query parameters during API call.
June 21 2018
- Change client's data storage on macOS from
Keychain
to file-based.
June 19 2018
- Add methods which allow to manually manage presence.
- Add client configuration option to enable manual presence list management.
- Fix implicit
self
retain in block warnings.
May 7 2018
- Silence implicit
self
usage in blocks. - Move listeners collection access serialization on queue to prevent access to property during non-atomic store.
February 14 2018
- Fix issue because of which channel(s) and/or group(s) wasn't able to maintain user's presence with heartbeat.
- Fix log file attributes to prevent their backup locally or to iCloud.
February 1 2018
- Fix issue because of which new
connected
presence API wasn't able todisconnect
user. - Fix behavior during unsubscribe - connect event won't fire after user
disconnect
, because there is no new channels about which listeners should be notified.
December 16 2017
- Add ability to change client's presence without actual subscription to channels/groups (based on heartbeat and presence leave API).
- Fix Xcode warnings about partly API availability.
- Fix race of conditions for logger.
- Fix pre-compile macro usage to send metrics when code is running on device with pre-iOS 10 version.
November 15 2017
- Add ability to completely disable PubNub's client logger with
PUBNUB_DISABLE_LOGGER
build configuration macro.
October 31 2017
- Add
suppressLeaveEvents
parameter toPNConfiguration
which allow to suppress presence leave API call on unsubscription.
- Fix issue because of which there was a chance to create second subscribe request while subscription loop has been restarted with new timetoken.
October 16 2017
- Add new method to unsubscribe from all channels and groups with completion block.
- Remove
receiver-is-weak
clang warning suppression since it has been deprecated.
- Fix issue because of which unsubscribe requests didn't terminated previous long-poll subscribe request.
September 15 2017
- Fix telemetry shared data access issues.
August 28 2017
- Add
delete message
functionality.
- Remove deprecated flag from
stripMobilePayload
so it will only print out deprecation warning in console w/o actual warning in Xcode. - Adjust telemetry cache clean up interval.
- Fix issue with wildcard subscription and presence events which treated as messages.
- Fix issue with
copyWithConfiguration
method which removed client itself from state change observers. - Fix de-duplication messages cache size issue.
- Fix issue because of which requests metrics gathered only if
metrics
log level has been enabled.
August 21 2017
- Fix bug with channel group subscription from previous release.
July 19 2017
- Add ability to gather service performance information.
- Add new error category
PNRequestURITooLongCategory
to properly handle and report issues to callbacks and completion blocks.
- Remove unsubscribe request cancellation by sequential call to subscribe API.
- Reorganize code which is responsible for subscribe requests cancellation.
- Fix issue with macOS Keychain access in multi-user environment when none authorized.
- Fix inline documentation.
April 26 2017
- Fix dependency analysis warnings for Fabric integration via CocoaPods.
March 31 2017
- Add support for presence deltas.
March 15 2017
- Add
pn-
prefix for client-provided unique user identifiers. - Add
OSSpinLock
andos_unfair_lock
switch.
- Change pre-compile macro for URLSession metrics gathering delegate usage.
- Persistent UUID storage and tests deprecated API silenced.
March 8 2017
- Fix uuid and auth keys encoding in query string.
March 3 2017
- Add TCP metrics output to PubNub logs (added corresponding logger level).
- Add information about
stripMobilePayload
deprecation to Xcode console with guide what can be done next.
- Deprecate
stripMobilePayload
property.
January 5 2017
- Change default origin.
December 16 2016
- Revert default origin reverted back to
pubsub.pubnub.com
December 16 2016
- Change object which is stored in cache which is used for de-duplication.
- Change default origin.
November 26 2016
- Fix cached messages identifier list clean up.
November 25 2016
- Add new configuration property
maximumMessagesCacheSize
which allow to enable (when non-zero value passed) messages de-duplication logic.
November 20 2016
- Add additional service response check and wrap (in case if still somehow non-dictionary reached data objects).
- Add
APPLICATION_EXTENSION_API_ONLY
flag toPubNub.podspec
and Framework targets.
- Remove
PNClass
and added manual service response parsers registration (in attempt to solve third-party classes initialization at run-time).
- Fix issue because of which
reverse
flag had same value asinclude timetokens
.
November 16 2016
- Add multi-channel history request API to API call builder interface.
- Add ability to subscribe / unsubscribe to/from channels and/or groups with single API call.
- Add ability to receive message sender identifier.
- Add verbose logs around subscription loop timetoken usage.
- Deprecate
restoreSubscription
property.
November 2 2016
- Add ability to specify for how long published message should be stored in channel's storage (added into API call builder interface)
- Fix
instanceID
which is placed inside ofPNConfiguration
- if it require to setup new client it will have sameinstanceID
. NowinstanceID
is set per PubNub client instance.
October 27 2016
- Add application extension environment support (
applicationExtensionSharedGroupIdentifier
PNConfiguration property). - Add
fire
andreplicate
options to publish API call builder. - Add messages count threshold configuration property (
requestMessageCountThreshold
) which allow to specify how many messages client can receive withoutPNRequestMessageCountExceededCategory
status object sending (to-client:didReceiveStatus:
observer callback). - Add
instanceid
query property to simplify multi client debug. - Add
requestid
query property for each request to force proxy servers to not cache responses and debug purposes. - Add builder pattern for API calls.
- Updated Fastlane configuration to speed test stage up.
- Fix issue with shared auto-updating user calendar which is used with logger (calendar instance created every time when timestamp information is required).
September 26 2016
- Add
NS_SWIFT_NAME
with Swift equivalent specified in it to all public API. This allow to prevent Swift function signature generator from changing it between Swift releases.
September 13 2016
- Add published message sequence number to publish API call (this information arrive as message envelope and used for issues debugging).
- Add logger method which will allow to use it from Swift.
- Add automatic heartbeat interval using formula and heartbeat value for calculated value.
- Add
channel
andsubscription
properties to represent channel from which event arrived and actual data stream name which is used by PubNub client for subscription.
- Deprecate
actualChannel
andsubscribedChannel
in favor ofchannel
andsubscription
(properties still available, but will be eventually will be completely removed).
September 2 2016
- Change default logs directory which should be used for tvOS client.
August 31 2016
- Add ability to complete issued API calls before application will be suspended (happens by default for iOS).
- Add PNConfiguration property called
completeRequestsBeforeSuspension
which allow to change default behavior (for iOS). - Add ability to disable message stripping (removing data which has been added by client during publish with mobile payload) which is enabled by default
- Add Carthage support.
- Framework targets build bundle with bitcode enabled by default.
- Remove dependency against
CocoaLumberjack
and replaced with own logger.
July 8 2016
- Add tests to cover fixed issue.
- Fix timeout issue which caused by recently added shared
NSURLSessionConfiguration
configuration.
July 8 2016
- Add ability provide limited customization of
NSURLSessionConfiguration
. - Add bitcode support for frameworks.
May 17 2016
- Fix podspec dependency version format compatibiliyty with CocoaPods 0.39.
May 13 2016
- Add original message (in case of decryption error) will be passed into
associatedObject
ofPNStatus
error instance.
- Fix issue for case when client doesn't use encryption and message has been received w/o mobile payload to clean up.
May 12 2016
pn_other
key has been removed and original object will be returned in delegate callback (this field used with message encryption and/or mobile push payload).- Mobile push payload removed from received message.
- Fix issue with PNNumber on 32bit system, when passed NSNumber instance created from unix-timestamp multiplied on 10000000.
- Fix message content descryption in case if it has been sent along with mobile push payload.
May 3 2016
- Add Pub/Sub V2 API support.
- Add message filtering basing on published message metadata.
- Add ability to publish message with additional metadata for filtering purposes.
- Add generics to collection properties and arguments.
- Add nulability annotations.
- Update inline documentation formatting.
- Update tests.
- Fix occupancy value storage for state-change (it will be set if available).
- Fix issue with presence here now request where 'nil' passed as channel / group.
- Fix script responsible for module map update in built frameworks.
- Fix
Universal Startic Frameork (iOS)
to use correct platform. - Add missing files to Mac Framework.
September 2 2016
- Add
heartbeatNotificationOptions
bitfield to PNConfiguration which can set how heartbeat state reported to listeners (usingPNHeartbeatNotificationOptions
).
- Remove
notifyAboutFailedHeartbeatsOnly
PNConfiguration property in favor ofheartbeatNotificationOptions
bitfield.
September 2 2016
- Add new property to PNConfiguration class called
notifyAboutFailedHeartbeatsOnly
which allow to configure client to notify not only about failed heartbeat statuses but for success as well.
January 27 2016
- Add private persistent storage which allow to keep crucial data safe on device.
- Add new target to build dynamic framework for tvOS.
- Fix issue with time token precision verification in case if non-PubNub's time token value has been passe.
January 12 2016
- Fix issue because of which client may not restore subscription on list of channels which has been left after previous unsubscription request.
December 20 2015
- Fix unsubscription issue because of which time token didn't get reset if there is no more channels on which client may continue subscription.
- Fix issue with
-unsubscribeFromAll
which may issue unwanted subscribe requests in case if method call followed by subscribe method call.
December 14 2015
- Add ability to build static library based frameworks (universal as well).
- Add Fabric support.
December 10 2015
- Fix client state cache issue because of which channel group state itself get updated even if state has been changed for one of channels from this group.
December 2 2015
- Add ability to set arbitrarily time token to catch up from into Subscribe API.
- Add ability to specify time tokens not only as 17 digit, but time interval from NSDate acceptable too.
- Add stringified representation for category and operation fields.
- Remove client initialisation code which affected PNLogger configuration.
- Fix Mac OSX target and scripts for dynamic framework creation.
November 24 2015
- Add watchOS deployment information to PubNub.podspec file.
November 20 2015
- Update Base64 decoding settings which will allow to decode encrypted messages from some clients which changed base64 encoding algorithms.
November 16 2015
- Change
build configuration
from Debug to Release for framework building targets. - Updated demo projects to correctly handle disconnection event (which happen for unsubscribe operation not for subscribe).
- Logger will print out current verbosity level information every time when it will be changed.
- All components (except core components) will add information about component to log output in format
<PubNub::{component}>
.
- Fix listener
disconnect
status handling after client stumbled on network issues and reportedunexpected disconnect
. - Fix issue because of which string has been stored inside of serviceData for PNErrorStatus created from NSError.
October 22 2015
- Remove deprecated string encoding methods.
- Fix memory issues with PNNetwork instance.
October 15 2015
- Add ability to build dynamic frameworks for iOS 8.0+.
October 14 2015
- Exposed heartbeat error to
-client:didReceiveStatus:
.
- FIx ping triggering logic after corner case with network issues.
October 3 2015
- Fix issue which prevented proper
-retry
execution.
October 1 2015
- Downgrade deployment target in Podspec file from 8.0 to 7.0.
- Update Podspec file organization.
- Update logger macro usage.
September 20 2015
- Add conditional device ID specification in request constructor.
- Add client information class.
- Add ObjC/Swift test for crypto issue.
- Suppress designated initializer warnings.
- Fix issue with messages decryption in history and real-time messaging API.
September 2 2015
- Add additional presence events tests.
- Fix subscriber parser issue because of which channel group name and actual channel changed their places in status object for presence event.
- Fix non-multiplexing subscription issue.
- Fix issue with missing presence event handling.
July 24 2015
- Add custom
User-Agent
header field.
- Remove CocoaPods post-install script from Podfile.
- Change test environment check.
- Fix and change data types for few data objects (which caused crash in swift environment).
- Fix size tests to handle updated packet size during tests.
- Fix Podfile.
July 13 2015
- Add
associatedObject
field to PNErrorStatus (for now only for decryption error on live feed).
- Report real-time messages decryption error to
-client:didReceiveMessage:
. - Report error if empty array of channels passed to enable push notifications.
- Replace AFNetworking with native NSURLSession wrapper.
- Fix issues with composed message publish (with mobile push payloads).
- Fix inability to publish mobile gateway payloads only.
- Fix issue with number publishing.
- Fix code which had warnings from clang.
- Fix logger levels manipulation.
- Fix demo application which provided wrong logger configuration for log file size.
- Fix podspec to suppress warnings which appeared because private headers has been exposed to public.
June 30 2015
- Update documentation hosted by CocoaPods.
June 30 2015
- The new, refactored PN 4.0 for iOS is Here!