Version history for the Pulsate iOS SDK, newest first.
Release history for the Pulsate iOS SDK, ordered newest to oldest.
Warning
CocoaPods could not find compatible versions for pod "PULPulsate"
If you have trouble installing a specific version of
PULPulsate, run these commands in order:
pod repo updatepod deintegratepod install --repo-updatepod update --repo-update
Release 4.8.3
Improvements:
- Click stats now try to sync instantly.
- App ID and App Key changes now delete the local database.
Q2 Release 4.8.01
No release notes were recorded for this version.
Release 4.8.0
Breaking Changes:
- Removed beacons.
Release 4.7.9
New:
- Debug mode — added logs and debugging tools covering the majority of the SDK. Debug mode can be turned on with
debugMode = truein the start-session call. When debug mode is on, shaking the device presents the debug screens. You can also use the deeplinkpulsate://debugmode, which opens a debug screen; add this scheme under Info.plist → URL types → URL schemes. The deeplink does not requiredebugMode = true— it opens the debug options list where the user can toggle debug mode.
Improvements:
- Push notification registration is now left to developers. Add your own permission setup; the SDK listens via delegates.
- Added edge-case fixes to push-to-feed push notification action-button destinations.
- In-Apps no longer show while the HTML Feed is open. Once the feed is dismissed, the queued In-App pops up.
Release 4.7.4
New:
- Pulsate SDK is now available on both CocoaPods and Swift Package Manager.
- Theme customization is now code based.
let config = PULThemeConfiguration()
config.bigInAppOneButtonColor = UIColor.red
config.bigInAppOneButtonTextColor = UIColor.white
manager.applyThemeConfiguration(config)
Improvements:
- Debug log entry improved.
- Fixed opening deeplinks when tapping the push notification body.
Removed:
- Screen records removed.
- Native Feed code removed.
- SDWebImage dependency removed.
Release 4.7.1
New:
- HTML / Web Feed — the Feed is now a WebView that loads the content of the user's Feed. This lets us add features and change the Feed theme dynamically without requiring a new SDK release or new app builds.
- Network logs — developers can turn on local logging of all network requests the Pulsate SDK makes.
- Debug Logger — developers can turn on local logging of the Pulsate SDK. Logs are grouped so you can log only the parts you need.
Improvements:
- Improved logic for debouncing tasks.
Removed:
setNewThreadButtonEnabled— no longer needed with the HTML / Web Feed. Threads are not available in the HTML / Web Feed.isNewThreadButtonEnabled— no longer needed with the HTML / Web Feed. Threads are not available in the HTML / Web Feed.
Release 4.6.0
New:
- Added
getFeedUnreadCount()for direct access to the unread count, to help keep in-app badges / unread counts up to date. - Added a Feed completion callback. It fires when
deinitis triggered, informing you when the user has exited the Pulsate Feed — a good time to callgetFeedUnreadCount()and update your UI.
Behavior Changes:
- Starting a session no longer triggers permissions. Asking for permissions and priming is left to developers; simply starting the Pulsate SDK will not ask for push / location permissions.
Bug Fixes:
- Fixed loading the external bundle. It now uses a direct reference to the bundle loaded into the app.
Release 4.5.5
New:
- New method
userHasLoggedIn:- Enables In-Apps
- Shows the last bounced In-App
- Sets the user as authorized
- Shows the last unauthorized message
- New method
userHasLoggedOut:- Disables In-Apps
- Sets the user as unauthorized
- New listener
pulsateLinkListener— URLs and deeplinks are sent to this listener first if set. Returningfalselets Pulsate handle the URL / deeplink; returningtruemeans you handled it. - Added privacy manifest.
Improvements:
- Database manager refactored to be thread safe.
- Stats now sync more often.
- Small In-App stats improvement.
Bug Fixes:
- In-Apps refactored to cover edge cases in statistics.
- The SDK now properly remembers authorization state between sessions.
- Fixed edge cases where pushes would not open destinations for unauthorized users.
02.04.2024 — Release 4.5.0
New Features:
- Pulsate SDK crashes and ANRs are now collected and sent to New Relic.
07.03.2024 — Release 4.4.0
Location Rework:
- Location and Geofencing were reworked. Active location updates caused by the SDK have been reduced by more than 90% in some cases. Most remaining location updates are caused by the Geofencing API itself.
- Restrict location updates when no geofence is nearby.
Improvements:
- In-Apps now auto-close when the app goes to the background. Fixed collecting dismiss stats for auto-closing.
- Added a cache for enable/disable push notifications, privacy, and location.
- Improved database auto-migration.
- Added reset/delete of the locations cache.
- Removed deprecation warnings.
- Removed and updated push notification settings/options.
- Improved push notification delivery and bounce events.
01.02.2024 — Release 4.3.0
Improvements:
- iOS deployment target changed from iOS 12 to iOS 13.
- Improvements to stat collection. SDKs now trigger the whole flow of stats that must have happened to reach this point.
- Update User / Privacy / Location / Push settings are now debounced to merge multiple calls into one. This reduces the number of requests and prevents a possible race condition where two active requests could update the same setting to different values.
- Added Core Data automatic migration.
Bug Fixes:
- We no longer send empty user data to the backend. If firstName / lastName / email / phone are null or empty, they are not sent.
- Update User no longer sends duplicate attributes and actions.
- Fixed time-spent calculation for screen records.
- Fixed setting Feature Suggestion as a category for talks.
current_locationis no longer sent if location is null.
14.09.2023 — Release 4.2.3
Bug Fixes:
- Fixed a crash caused by starting a session for an alias with an empty alias — it now throws a custom error.
- Moved In-App show to the main thread, fixing a rare crash when rendering In-Apps.
14.07.2023 — Release 4.2.2
Bug Fixes:
- Fixed color configuration JSON.
27.06.2023 — Release 4.2.1
Bug Fixes:
- Fixed button colors on In-Apps.
- Fixed button colors on the Back of the Card.
14.06.2023 — Release 4.2.0
New Features:
- Dual Buttons — new design; Big In-App / Card / Back of Card can now have up to two buttons.
- New colors in
PulsateConfiguration.json:pulsate_card_one_btn_colorpulsate_card_one_txt_colorpulsate_card_two_btn_colorpulsate_card_two_txt_colorpulsate_card_two_btn_outline_colorpulsate_card_back_one_btn_colorpulsate_card_back_one_txt_colorpulsate_card_back_two_btn_colorpulsate_card_back_two_txt_colorpulsate_card_back_two_btn_outline_colorpulsate_big_in_app_one_button_colorpulsate_big_in_app_one_button_text_colorpulsate_big_in_app_two_button_colorpulsate_big_in_app_two_button_text_colorpulsate_big_in_app_two_button_outline_color
Stats:
-
PULUserAction.recordUserStatActionis now responsible for collecting all stats. -
Added an update-user request to beacon events.
-
Added an update-user request to geofence events.
-
Added an update-user request to location updates. This happens only when the geofence list is refreshed; we try to wait at least 1 km between refreshes.
-
Added a threshold for update-user requests. If the combined size of user actions and user updates does not pass the threshold, the request will not happen. This prevents empty requests and background updates for every single change.
Thresholds:
- Alias Change — 0
- Logout — 0
- Daily sync — 0
- Geofence — 1
- Beacon — 1
- Location Update — 1
Improvements:
- Pulsate config for strings and colors can now be moved into app files. Copy the configuration and strings from the
pulsatebasicbundle into your main app, then set your main app bundle ID viamanager.resourceBundleIdentifier. Example for an app with identifierpulsate.universal.app:pulsateManager.resourceBundleIdentifier = "pulsate.universal.app"— the SDK then searches for resources in the app's main folder. - When a
badgeDelegateis set, the SDK no longer updates badges on its own; it sends a callback so the developer can handle the badge update.
Bug Fixes:
handlePushNotificationnow retries properly when the app state is not active.- Fixed a possible crash when
PULFeedEmptyViewis null. createSessionAndGetDatanow retries properly when the app state is not active.- Logout now ends the session first and then logs the user out.
16.06.2023 — Release 4.0.8.3
- Released 4.0.8.1 using Xcode 14.1.
14.06.2023 — Release 4.0.8.1
Bug Fixes:
- Fixed a possible crash when
PULFeedEmptyViewis null.
12.05.2023 — Release 4.0.8
Bug Fixes:
- Back of Card now properly renders the button with Bottom Navigation.
- Turned off debug logs for builds.
04.04.2023 — Release 4.0.7
Improvements:
- Added a retry mechanism to start session.
- Added a retry mechanism to opening a push destination.
Bug Fixes:
- Fixed In-Apps not scaling properly when there is no personal message.
- Fixed an issue where update-user / end-session would crash due to nulls.
17.11.2022 — Release 4.0.5
Improvements:
showLastInAppNotification()changed toshowLastInAppNotification(_ forceShow: Bool = false)— whenforceistrue, the SDK is forced to show the last received In-App notification even ifisInAppNotificationEnabled()returnsfalse.forcedefaults tofalse.
27.10.2022 — Release 4.0.4
Bug Fixes:
PULTextBlockis now public.PULTextStyleis now public.
26.10.2022 — Release 4.0.3
Bug Fixes:
BUILD_LIBRARY_FOR_DISTRIBUTIONis nowYES. This should fix build errors caused by a Swift version mismatch.PULPulsateUnauthorizedManagerDelegateandPULPulsateBadgeDelegateare now public.- Unread color fix — card buttons now properly change when cards are read.
16.09.2022 — Release 4.0.0
iOS 15 release — built with Xcode 13.4.1 (13F100).
Improvements:
- SDK rewritten in Swift.
- Improved UI layout rendering in In-Apps.
- Improved UI layout rendering in the Feed.
- Improved location checking.
- Improved geofencing.
- Improved push notification responses.
05.12.2022 — Release 3.8.1
Improvements:
- Backported In-App improvements from 4.0.5.
showLastInAppNotification()changed toshowLastInAppNotification(_ forceShow: Bool = false)— whenforceistrue, the SDK is forced to show the last received In-App notification even ifisInAppNotificationEnabled()returnsfalse.forcedefaults tofalse.
14.10.2021 — Release 3.8.0
iOS 15 release — built with Xcode 13.0 (13A233).
Improvements:
- Improved accessibility — navigation, VoiceOver support, element sizes, UI grouping.
- Improved geofencing accuracy on iOS 15.
- Small In-Apps can now be dismissed by swiping left or right.
- Small In-Apps now try to always show below the toolbar and above bottom-navigation elements.
- Simplified and reduced the number of background tasks running.
- Code cleanup — removed many warnings, split large chunks of code into smaller methods, fixed formatting.
Bug Fixes:
- Push notifications now properly open talks when the app is force-closed.
- Push notifications with expired cards no longer take the user to a feed that loads forever.
- Fixed edge cases that could cause "destination feed" to sometimes not take the user to the feed.
- The New Thread button now animates properly (hide / show) when the user scrolls the Feed.
18.06.2021 — Release 3.7.0
New Features:
- Added collecting
background_permissionstate in update_user and end_session. - The SDK now collects stats about pushes, In-Apps, and cards.
Bug Fixes:
- Fixed a crash that happened when the user was in the inbox and received a card message.
- Fixed a bug that could leave the inbox stuck in a forever-loading state when returning from a single card view.
- User actions are now deleted after being successfully sent to the server.

