Releases: braze-inc/braze-swift-sdk
Releases · braze-inc/braze-swift-sdk
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
6.6.0
6.6.0
Fixed
- Fixes an issue in HTML in-app messages where custom event and purchase properties would always convert values for
1
and0
to becometrue
andfalse
, respectively.- These property values will now respect their original form in the HTML.
- Prevents the default Braze UI from displaying in-app messages underneath the keyboard when Stage Manager is in use.
Added
- Adds the
Braze.FeatureFlags.logFeatureFlagImpression(id: String)
method. - Adds the optional
merge
parameter to the Objective-C representation of thesetCustomAttribute(key:dictionary:merge:)
method.
6.5.0
6.5.0
Fixed
- Content card impressions can now be logged any number of times on a single card, bringing parity with Android and Web.
- This removes the limit introduced in 6.3.1 where a card impression could only be logged once per session.
- In the Braze-provided Content Cards feed UI, impressions will be logged once per feed instance.
Added
- Adds a simplified method for integrating push notification support into your application:
- Automatic push integration can be enabled by setting
configuration.push.automation = true
on your configuration object.- This eliminates the need for the manual push integration outlined in the Implement the push notification handlers manually tutorial section.
- When enabled, the SDK will automatically implement the necessary system delegate methods for handling push notifications.
- Compatibility with other push providers, whether first or third party, is maintained. The SDK will automatically handle only Braze push notifications, while original system delegate methods will be executed for all other push notifications.
- Each automation step can be independently enabled or disabled. For example,
configuration.push.automation.requestAuthorizationAtLaunch = false
can be used to prevent the automatic request for push permissions at launch. - Resources:
- Updated Standard Push Notifications tutorial.
Braze.Configuration.Push.automation
property.Braze.Configuration.Push.Automation
type (provides details about the behavior of each automation step).
- Automatic push integration can be enabled by setting
- Adds the
Braze.Configuration.forwardUniversalLinks
configuration. When enabled, the SDK will redirect universal links from Braze campaigns to the appropriate system methods. - Adds the
Braze.Notifications.subscribeToUpdates(_:)
method to subscribe to the push notifications handled by the SDK.- This method runs the provided closure with a
Braze.Notifications.Payload
class representing the processed push notification.
- This method runs the provided closure with a
- Adds the
Braze.Notifications.deviceToken
property to access the most recent notification device token received by the SDK.
6.4.0
6.4.0
Fixed
- Fixes an issue preventing text fields from being selected in HTML IAMs for iOS 15.
- Fixes an issue where the device model was inaccurately reported as iPad on macOS (Mac Catalyst and Designed for iPad configurations).
- Fixes an issue where custom event and purchase properties would not accept an entry if its value was an empty string.
- Fixes a crash that occurred in the default UI for Content Cards when encountering a zero-value aspect ratio.
- Fixes an issue introduced in 6.0.0 where images in in-app messages would appear smaller than expected when using the compatibility UI (
BrazeUICompat
).
Added
- Adds the
unviewedCards
convenience property to theBraze.ContentCards
class to get the unviewed content cards for the current user.
6.3.1
6.3.1
Fixed
- Fixes an issue where the previous user's data would not be flushed after calling
changeUser(userId:sdkAuthSignature:)
when the SDK authentication feature is enabled. - A content card impression can now be logged once per session. Previously, the Braze-provided Content Cards UI would limit to a single impression per card at maximum, irrespective of sessions.
- Fixes an issue that previously caused push notification URLs with percent-encoded characters to fail during decoding.
- Fixes a behavior to automatically set a user's push subscription state to
optedIn
after push permissions have explicitly been authorized via the Settings app. - Correctly hides shadows on in-app messages that are configured with a transparent background.
- Fixes a rare crash occurring when deinitializing the Braze instance.
Added
- Adds additional logging for network-related decoding errors.
6.3.0
6.3.0
Fixed
- "Confirm" and "Cancel" notification categories now show the correct titles on the action buttons.
Added
- Adds a new
SDKMetadata
option.reactnativenewarch
for the React Native New Architecture. - Adds public initializers for
Braze.URLContext
andBraze.ModalContext
.
6.2.0
6.2.0
Fixed
- Fixes a crash introduced in 6.0.0 when displaying an HTML in-app message using the
BrazeUICompat
module. - Removed a system call that is known to be slow on older versions of macOS. This resolves the SDK hanging during initialization on Mac Catalyst when running on affected macOS versions.
Added
- Adds support for
target
attributes on anchor tags in HTML in-app messages (e.g.<a href="..." target="_blank"></a>
).- Adding the
target
attribute to links will allow them to open in a new webview without dismissing the current in-app message. - This behavior can be disabled via the
linkTargetSupport
property of theBrazeInAppMessageUI.HtmlView.Attributes
struct. - See our Custom HTML in-app messages documentation page for more details.
- Adding the