iOSiOSCocoaObjective-CChangelog for PubNub iOS-SDK-v4 SDK

PubNub EOL Policy


Added
  • Add macOS support for iOS frameworks.

Fixed
  • Fix subscribe request timeout missing 'reconnect' event.

  • Fix empty heartbeat value set to minimum on configuration copy.

Modified
  • Update outdated configuration object inline help documentation

Added
  • Add ability to pass FCM token for channel add / remove and audition APNS API endpoints.

Fixed
  • Fix crash caused by code, which performed OS version parsing using older API which provides localized string (include additional information in addition to version information).

Added
  • Add value wrapping around heartbeat 'value'.

Fixed
  • Fix universal Frameworks build script.

Modified
  • Separate tests project from main workspace.

Modified
  • Resolved project warnings, which caused issues with Carthage framework build.

Fixed
  • Changed builder API interface visibility for frameworks from project to public.

Fixed
  • Changed message count result object header file visibility for frameworks from project to public.

Modified
  • Moved Keychain records update calls to secondary queue.

Added
  • Added ability to retrieve number of messages in specified channels using timetoken as reference date.

Modified
  • Removed channel names sorting from utility class (because of which new API wasn't able to work properly).

Added
  • Added ability to get / set presence state for multiple channel / groups (at once).

Added
  • Added ability to set arbitrary query parameters during API call.

Modified
  • Changed client's data storage on macOS from Keychain to file-based.

Modified
  • Changed presence API flow and added client configuration option to enable manual presence list management.

  • Fixed implicit 'self' retain in block warnings.

Fixed
  • Added listeners collection access serialization on queue to prevent access to property during non-atomic store

Modified
  • Silenced implicit self usage in blocks.

Fixed
  • Fixed issue because of which channel(s) and/or group(s) wasn't able to maintain user's presence with heartbeat.

Modified
  • Fixed log file attributes to prevent their backup locally or to iCloud.

Fixed
  • Fixed issue because of which new 'connected' presence API wasn't able to 'disconnect' user.

Modified
  • Fixed behavior during unsubscribe - connect event won't fire after user 'disconnectec', because there is no new channels about which listeners should be notified.

Added
  • Added ability to change client's presence without actual subscription to channels/groups (based on heartbeat and presence leave API).

Fixed
  • Fixed pre-compile macro usage to send metrics when code is running on device with pre-iOS 10 version.

  • Fixed race of conditions for logger.

Modified
  • Removed Xcode warnings about partly API availability.

Modified
  • Added ability to completely disable PubNub's client logger with 'PUBNUB_DISABLE_LOGGER' build configuration macro.

Added
  • Added 'suppressLeaveEvents' parameter to PNConfiguration which allow to suppress presence leave API call on unsubscription.

Fixed
  • Fixed issue because of which there was a chance to create second subscribe request while subscription loop has been restarted with new timetoken.

Added
  • Added new method to unsubscribe from all channels and groups with completion block.

Fixed
  • Fixed issue because of which unsubscribe requests didn't terminated previous long-poll subscribe request.

Modified
  • Removed 'receiver-is-weak' clang warning suppression since it was deprecated.

Fixed
  • Fixed telemetry shared data access issues.

Added
  • Added 'delete message' functionality.

Fixed
  • Fixed issue with wildcard subscription and presence events which treated as messages.

  • Fixed issue with copyWithConfiguration method which removed client itself from state change observers.

  • Fixed de-duplication messages cache size issue.

  • Fixed issue because of which requests metrics gathered only if 'metrics' log level has been enabled.

Modified
  • Removed deprecated flag from 'stripMobilePayload' so it will only print out deprecation warning in console w/o actual warning in Xcode.

  • Adjusted telemetry cache clean up interval.

Fixed
  • Fixed issue with subscription to channel group.

Modified
  • Added ability to gather service performance information.

  • Added new error category PNRequestURITooLongCategory to properly handle and report issues to callbacks and completion blocks.

Fixed
  • Removed unsubscribe request cancellation by sequential call to subscribe API.

  • Reorganized code which is responsible for subscribe requests cancellation

  • Fixed issue with macOS Keychain access in multi-user environment when none authorized.

  • Fixed inline documentation.

Fixed
  • Fixed dependency analysis warnings for Fabric integration via CocoaPods.

Added
  • Add support for presence deltas.

Added
  • Added ability to store last used UUID in persistent storage.

Modified
  • Added 'pn-' prefix for client-provided unique user identifiers.

  • Added OSSpinLock and os_unfair_lock switch.

Fixed
  • Changed pre-compile macro for URLSession metrics gathering delegate usage.

Fixed
  • Fixed uuid and auth keys encoding in query string.

Modified
  • Added TCP metrics output to PubNub logs (added corresponding logger level).

  • Deprecated 'stripMobilePayload' property with output into console if property still used.

Modified
  • Changed default origin

Modified
  • Reverted default origin back to pubsub.pubnub.com

Fixed
  • Changed object which is stored in cache which is used for de-duplication.

Modified
  • Changed default origin

Fixed
  • Fixed cached message identifiers list clean up.

Modified
  • Added new configuration property 'maximumMessagesCacheSize' which allow to enable (when non-zero value passed) messages de-duplication logic.

Modified
  • Added 'APPLICATION_EXTENSION_API_ONLY' flag to PubNub.podspec and Framework targets.

Fixed
  • Fixed issue because of which 'reverse' flag had same value as 'include timetokens'.

  • Removed PNClass and added manual service response parsers registration (in attempt to solve third-party classes initialization at run-time).

  • Added additional service response check and wrap (in case if still somehow non-dictionary reached data objects).

Added
  • Added multi-channel history request API to API call builder interface.

  • Added ability to subscribe / unsubscribe to/from channels and/or groups with single API call.

Modified
  • Added ability to receive message sender identifier.

  • Deprecated 'restoreSubscription' property.

  • Added verbose logs around subscription loop timetoken usage.

Added
  • Added ability to specify for how long published message should be stored in channel's storage (added into API call builder interface).

Fixed
  • Fixed 'instanceID' which is placed inside of PNConfiguration.

Modified
  • Added application extension environment support (applicationExtensionSharedGroupIdentifier PNConfiguration property).

  • Added messages count threshold configuration property.

  • Added 'instanceid' query property.

  • Added 'requestid' query property.

  • Updated fastlane configuration to speed test stage up.

Added
  • Added builder pattern for API calls.

  • Added 'fire' and 'replicate' options to publish API call builder.

Fixed
  • Fixed issue with shared auto-updating user calendar.

Modified
  • added NS_SWIFT_NAME with Swift equivalent specified in it to all public API to prevent Swift function signature change between Swift releases.

Modified
  • added published message sequence number to publish API call (this information arrive as message envelope and used for issues debugging).

  • added automatic heartbeat interval using formula and heartbeat value for calculated value.

  • deprecated 'actualChannel' and 'subscribedChannel' in favor of 'channel' and 'subscription' (properties still available, but will be eventually will be completelly removed).

Added
  • added logger method which will allow to use it from Swift.

  • added 'channel' and 'subscription' properties to represent channel from which event arrived and actual data strean name which is used by PubNub client for subscription.

Fixed
  • Changed default logs directory which should be used for tvOS client.

Added
  • added scheduled API calls completion before application suspension (for iOS only).

  • added Carthage support.

  • added ability to disable message stripping (removing data which has been added by client during publish with mobile payload) which is enabled by default.

Modified
  • removed dependency to CocoaLumberjack.

  • by default Framework bundles will be build with bitcode enabled.

Fixed
  • fixed timeout issue which caused by recently added shared NSURLSessionConfiguration configuration.

Modified
  • added tests to cover fixed issue

Modified
  • added ability provide limited customization of NSURLSessionConfiguration.

  • added bitcode support for frameworks.

Fixed
  • fixed podspec dependency version format compatibiliyty with CocoaPods 0.39.

Fixed
  • fixed issue for case when client doesn't use encryption and message has been received w/o mobile payload to clean up.

  • original message (in case of decryption error) will be passed into associatedObject of PNStatus error instance.

Fixed
  • fixed issue with PNNumber on 32bit system, when passed NSNumber instance created from unix-timestamp multiplied on 10000000.

  • fixed message content descryption in case if it has been sent along with mobile push payload.

Modified
  • mobile push payload removed from received message.

  • '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).

Added
  • added Pub/Sub V2 API support.

  • added message filtering basing on published message metadata.

  • added ability to publish message with additional metadata for filtering purposes.

  • added generics to collection properties and arguments.

Modified
  • added nulability annotations.

  • updated tests.

  • updated inline documentation formatting.

Fixed
  • fixed occupancy value storage for state-change (it will be set if available).

  • fixed issue with presence here now request where 'nil' passed as channel / group.

  • fixed script responsible for module map update in built frameworks.

  • fixed 'Universal Startic Frameork (iOS)' to use correct platform.

  • added missing files to Mac Framework.

Modified
  • changed way how heartbeat state notification is set. Now it can be specified in heartbeatNotificationOptions bitfield property using PNHeartbeatNotificationOptions options.

Modified
  • added 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.

Modified
  • added private persistent storage which allow to keep crucial data safe on device.

Added
  • added new target to build dynamic framework for tvOS.

Fixed
  • fixed issue with time token precision verification in case if non-PubNub's time token value has been passe.

Fixed
  • fixed issue because of which client may not restore subscription on list of channels which has been left after previous unsubscription request.

Fixed
  • fixed unsubscription issue because of which time token didn't get reset if there is no more channels on which client may continue subscription.

  • fixed issue with -unsubscribeFromAll which may issue unwanted subscribe requests in case if method call followed by subscribe method call.

Added
  • added ability to build static library based frameworks (universal as well).

  • added Fabric support.

Fixed
  • fixed cient state cache issue because of which channel group state itself get updated even if state has been changed for one.

Added
  • extended subscribe API with ability to specify arbitrarily time token to catch up from.

Modified
  • added ability to specify time tokens not only as 17 digit, but time interval from NSDate acceptable too.

  • added stringified representation for category and operation fields.

  • removed client initialisation code which affected PNLogger configuration.

Fixed
  • fixed Mac OSX target and scripts for dynamic framework creation.

Added
  • added watchOS deployment information to PubNub.podspec file.

Fixed
  • adjusted Base64 decoding settings which will allow to decode encrypted messages from some clients which changed base64 encoding algorithms.

Fixed
  • fixed listener 'disconnect' status handling after client stumbled on network issues and reported 'unexpected disconnect'.

  • fixed issue because of which string has been stored inside of serviceData for PNErrorStatus created from NSError.

Modified
  • 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}>.

  • changed '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).

Modified
  • fixed memory issues with PNNetwork instance.

  • removed deprecated string encoding methods.

Added
  • added ability to build dynamic frameworks for iOS 8.0+.

Modified
  • version bump because of backward compatible changes in public interface.

Modified
  • exposed heartbeat error to ‐client:didReceiveStatus:

Fixed
  • fixed ping triggering logic after corner case with network issues

Fixed
  • fixed issue which prevented proper -retry execution.

Modified
  • updated logger macro usage.

  • updated Podspec file organization.

  • downgraded deployment target in Podspec file from 8.0 to 7.0.

Modified
  • suppressed designated initializer warnings.

  • added client information class.

  • added conditional device ID specification in request constructor.

  • added ObjC/Swift test for crypto issue.

Fixed
  • fixed issue with messages decryption in history and real-time messaging API.

Fixed
  • fixed issue with missing presence event handling.

  • fixed subscriber parser issue because of which channel group name and actual channel changed their places in status object for presence event.

  • fixed non-multiplexing subscription issue.

Modified
  • added additional presence events tests.

Fixed
  • fixed and changed data types for few data objects (which caused crash in swift environment).

  • fixed size tests to handle updated packet size during tests.

  • Fixed Podfile.

Modified
  • removed CocoaPods post-install script from Podfile.

  • added custom 'User-Agent' header field.

  • changed test environment check.

Modified
  • replaced AFNetworking with native NSURLSession wrapper.

  • if empty array of channels passed to enable push notifications SDK will report error.

  • added 'associatedObject' field to PNErrorStatus (for now only for decryption error on live feed).

  • in case of decryption error only status object will arrive to lisetner (‐client:didReceiveMessage: won't be called).

Fixed
  • fixed podspec to suppress warnings which appeared because private headers has been exposed to public.

  • fixed code which had warnings from clang.

  • fixed issues with composed message publish (with mobile push payloads).

  • fixed demo application which provided wrong logger configuration for log file size.

  • fixed issue with number publishing.

  • fixed logger levels manipulation.

  • fixed inability to publish mobile gateway payloads only.

Modified
  • updated documentation hosted by CocoaPods.

Modified
  • The new, refactored PN 4.0 for iOS is here.