Releases: braze-inc/braze-swift-sdk
Releases · braze-inc/braze-swift-sdk
7.7.0
7.7.0
Added
- Updates the prebuilt release assets to include the privacy manifest for manual integrations of SDWebImage.
- Follow the manual integration guide to add the
SDWebImage.bundle
to your project for static XCFrameworks.
- Follow the manual integration guide to add the
- Enhances support for language localizations.
- Introduces a localization for Azerbaijani strings.
- Updates Ukrainian localization strings for accuracy.
Fixed
- Fixes the default button placement for full in-app message views.
- Fixes an issue where setting
Braze.Configuration.Api.endpoint
to a URL with invalid characters could cause a crash.- If the SDK is given an invalid endpoint, it will no longer attempt to make network requests and will instead log an error.
- Fixes an issue preventing
BrazeLocation
from working correctly when using the dynamic XCFrameworks.
6.6.2
7.6.0
7.6.0
Added
- Adds the
Braze.InAppMessage.Data.isTestSend
property, which indicates whether an in-app message was triggered as part of a test send. - Adds logic to separate Braze data into tracking and non-tracking requests.
- Adds the following methods to set and edit the allow list for properties that will be used for tracking:
Braze.Configuration.Api.trackingPropertyAllowList
: Set the initial allow list before initializing Braze.Braze.updateTrackingAllowList(adding:removing:)
: Update the existing allow list during runtime.
- For full usage details on these configurations, refer to our tutorial here.
- Adds the following methods to set and edit the allow list for properties that will be used for tracking:
Fixed
- Adds safeguards to prevent a rare race condition occuring in the SDK network layer.
- Prevents in-app message test sends from attempting re-display after being discarded by a custom in-app message UI delegate.
- Fixes an issue in the default Braze in-app message UI where some messages were not being removed from the stack after display.
- Fixes the compilation of
BrazeKitCompat
andBrazeUICompat
in Objective-C++ projects. - Fixes an issue in
BrazeUICompat
where the header text in Full or Modal in-app messages would be duplicated in place of the body text under certain conditions. - Fixes the encoding of values of types
Float
,Int8
,Int16
,Int32
,Int64
,UInt
,UInt8
,UInt16
,UInt32
andUInt64
. Those types were previously not supported in custom events and purchase properties. - Fixes an issue preventing purchase events from being logged when the product identifier has a leading dollar sign.
- Fixes an issue preventing custom attributes from being logged when the attribute key has a leading dollar sign.
7.5.0
7.5.0
Added
- Adds privacy manifests for
BrazeKit
andBrazeLocation
to describe Braze's data collection policies. For more details, refer to Apple's documentation on privacy manifests.- More fine-tuned configurations to manage your data collection practices will be made available in a future release.
- Adds the
optInWhenPushAuthorized
configuration property to specify whether a user's notification subscription state should automatically be set tooptedIn
when updating push permissions to authorized. - The WebKit Inspector developer tool is now enabled by default for all instances of
BrazeInAppMessagesUI.HtmlView
. It can be disabled by settingBrazeInAppMessagesUI.HtmlView.Attributes.allowInspector
tofalse
.
Fixed
- Fixes an issue with the code signatures of XCFrameworks introduced in
7.1.0
. - Fixes a crash on tvOS devices running versions below 16.0, caused by the absence of the
UIApplication.openNotificationSettingsURLString
symbol in those OS versions. - Fixes an issue where a content card would not display if the value under "Redirect to Web URL" was an empty string.
- Fixes incorrect behavior in BrazeUI where tapping the body of a
Full
orModal
in-app message with buttons and an "Image Only" layout would dismiss that message and process the button's click action.- Tapping the body will now be a no-op, bringing parity with other platforms.
7.4.0
7.4.0
Added
- Adds two alternative repositories to support specialized integration options. For instructions on how to leverage them, refer to their respective READMEs:
- braze-inc/braze-swift-sdk-prebuilt-static which provides all Braze modules as static XCFrameworks.
- braze-inc/braze-swift-sdk-prebuilt-dynamic which provides all Braze modules as dynamic XCFrameworks.
- In-App Message assets from URLs containing the query parameter
cache=false
will not be prefetched.- Additionally, when presented as a part of In-App Messages or Content Cards, those URLs will be fetched using the
URLRequest.CachePolicy.reloadIgnoringLocalAndRemoteCacheData
caching policy, which always requests a fresh version from the source and ignores any cached versions.
- Additionally, when presented as a part of In-App Messages or Content Cards, those URLs will be fetched using the
Fixed
- Fixes XCFrameworks headers to use the
#import
syntax instead of@import
for compatibility with Objective-C++ contexts. - Fixes the push token tag validation during Live Activity registration, accepting strings up to 256 bytes instead of 255 bytes.
Braze.ContentCards.unviewedCards
no longer includes Control cards to bring parity with Android and Web.- Fixes an Objective-C metaclass crash that occurs when initializing a custom subclass of certain BrazeUI views.
7.3.0
7.3.0
Added
- Adds support for Expo Notifications event listeners when using the automatic push integration.
Fixed
- Fixes a rare concurrency issue that might result in duplicated events when logging large amount of events.
- Fixes an issue where
user.set(dateOfBirth:)
was not setting the date of birth accurately due to variations in the device's timezone.
7.2.0
7.2.0
Added
- Exposes the
BrazePushStory.NotificationViewController.didReceive
methods for custom handling of push story notification events.
Fixed
- Resolves an issue for in-app messages with buttons where tapping on the body would incorrectly execute the button's click action.
- Now, when you tap on the body of an in-app message with buttons, no event should occur.
- Resolves a potential deadlock under rare circumstances in BrazeUI's In-App messages presentation.
- Fixes the default implementation for the Objective-C representation of
BrazeInAppMessageUIDelegate.inAppMessage(_:shouldProcess:url:buttonId:message:view:)
to return the proper click action URL. - Resolves an issue where the body of the modal in-app message may be displayed stretched on some device models.
- Resolves an issue where
BrazeInAppMessageUI
could fail to detect the correct application window for presenting its post-click webview.BrazeInAppMessageUI
now prefers using the current keyUIWindow
instead of the first one in the application's window stack.
Removed
Braze.Configuration.DeviceProperty.pushDisplayOptions
has been deprecated. Providing this value no longer has an effect.
7.1.0
7.1.0
Fixed
- Resolves an issue preventing templated in-app messages from triggering if a previous attempt to display the message failed within the same session.
- Fixes an issue that prevented custom events and nested custom attributes from logging if had a property with a value that was prefixed with a
$
. - Fixes a bug in the Content Cards feed UI where the empty feed message would not display when the user only had control cards in their feed.
- Adds additional safeguards when reading the device model.
Added
- Adds a code signature to all XCFrameworks in the Braze Swift SDK, signed by
Braze, Inc.
. BrazeInAppMessageUI.DisplayChoice.later
has been deprecated in favor ofBrazeInAppMessageUI.DisplayChoice.reenqueue
.
7.0.0
7.0.0
Breaking
- The
useUUIDAsDeviceId
configuration is now enabled by default.- For more details on the impacts, refer to this Collecting IDFV - Swift.
- The
Banner
Content Card type and corresponding UI elements have been renamed toImageOnly
. All member methods and properties remain the same.Braze.ContentCard.Banner
→Braze.ContentCard.ImageOnly
BrazeContentCardUI.BannerCell
→BrazeContentCardUI.ImageOnlyCell
- Refactors some text layout logic in BrazeUI into a new
Braze.ModalTextView
class. - Updates the behavior for Feature Flags methods.
FeatureFlags.featureFlag(id:)
now returnsnil
for an ID that does not exist.FeatureFlags.subscribeToUpdates(:)
will trigger the callback when any refresh request completes with a success or failure.- The callback will also trigger immediately upon initial subscription if previously cached data exists from the current session.
Fixed
- Fixes compiler warnings about Swift 6 when compiling
BrazeUI
while using Xcode 15. - Exposes public imports for
ABKClassicImageContentCardCell.h
andABKControlTableViewCell.h
for use in the BrazeUICompat layer. - Adds additional safeguards around invalid constraint values for
BrazeInAppMessageUI.SlideupView
. - Resolves a Content Cards feed UI issue displaying a placeholder image in Classic cards without an attached image.
Added
- Adds the
enableDarkTheme
property toBrazeContentCardUI.ViewController.Attributes
.- Set this field to
false
to prevent the Content Cards feed UI from adopting dark theme styling when the device is in dark mode. - This field is
true
by default.
- Set this field to
6.6.1
6.6.1
Fixed
- Fixes a crash in the geofences feature that could occur when the number of monitored regions exceeded the maximum count.
- Fixes an issue introduced in
6.3.1
that would always update a user's push subscription status tooptedIn
on app launch if push permissions were authorized on the device settings.- The SDK now will only send the subscription status at app launch if the device notification settings goes from denied to authorized.
Braze.ContentCard.logClick(using braze: Braze)
will now log a click regardless of whether theContentCard
has aClickAction
.- This behavior differs from the default API
Braze.ContentCard.Context.logClick()
, which has the safeguard of requiring aClickAction
to log a click.
- This behavior differs from the default API