Releases: braze-inc/braze-swift-sdk-prebuilt-mergeable
Releases · braze-inc/braze-swift-sdk-prebuilt-mergeable
11.3.0
11.3.0
Fixed
- Fixes a behavior where calling the
logClick
bridge method in HTML in-app messages with""
as the button ID would log an error.- Instead, this would log an in-app message body click to match other platforms.
Added
- Adds support for the Braze Banner Cards product.
- For usage details, refer to our tutorial here.
11.2.0
11.2.0
Fixed
- Fixes the Objective-C
Braze.delegate
declaration to beweak
like the Swift variant.
Added
Braze.prepareForDelayedInitialization
now takes an optional parameteranalyticsBehavior: PushEnqueueBehavior
.- Braze uses this value to determine whether any Braze push payloads received before initialization should be processed once initialization is complete.
PushEnqueueBehavior.queue
will enqueue received push payloads to be processed upon initialization. This option is selected by default.PushEnqueueBehavior.drop
will drop received push payloads, ignoring them.
- Adds configuration properties to customize the
lineSpacing
,maxLineHeight
,minLineHeight
, andlineHeightMultiple
for the header and message texts in full and modal in-app messages. - Updates
BrazeContentCardUI.ViewController.Attributes.defaults
to be avar
to allow directly editing the property for convenience.
11.1.1
11.1.1
Fixed
- Fixes an issue introduced in
11.0.0
where the push subscription status would be sent to the backend with an inaccurate value at startup, causing an unexpected subscription state. The SDK now sends up the accurate subscription status at each startup.
11.1.0
11.1.0
Fixed
- Fixes an issue introduced in
11.0.0
where the push token status would not always be reported in all circumstances. - Fixes a display bug where an in-app message would appear truncated after certain keyboard dismissal scenarios.
- Fixes a reference cycle in
Braze.NewsFeedCard.Context
that could prevent the card from being deallocated.
Added
- Adds a public initializer for
Braze.Notifications.Payload
.
11.0.0
11.0.0
Breaking
- Adds support for Swift 6 strict concurrency checking.
- Relevant public Braze classes and data types now conform to the
Sendable
protocol and can be safely used across concurrency contexts. - Main thread-only APIs are now marked with the
@MainActor
attribute. - We recommend using Xcode 16.0 or later to take advantage of these features while minimizing the number of warnings generated by the compiler. Previous versions of Xcode may still be used, but some features may generate warnings.
- Relevant public Braze classes and data types now conform to the
- When integrating push notification support manually, you may need to update the
UNUserNotificationCenterDelegate
conformance to use the@preconcurrency
attribute to prevent warnings.- Applying the
@preconcurrency
attribute on protocol conformance is only available in Xcode 16.0 or later. Reference our sample integration code here. - As of Xcode 16.0, Apple has not yet audited the
UNUserNotificationCenterDelegate
protocol for Swift concurrency.
extension AppDelegate: @preconcurrency UNUserNotificationCenterDelegate { // Your existing implementation }
- Applying the
- Updates the
SDWebImage
dependency inBrazeUICompat
and sample apps to5.19.7+
to support Swift 6 strict concurrency checking.
Fixed
- Fixes the push authorization status reporting to display the proper push token status on the Dashboard when a user has not explicitly accepted or declined push permissions.
10.3.1
10.3.0
10.3.0
Fixed
- Fixes the in-app message orientation validation logic, which prevented certain device classes from displaying messages under certain orientation configurations.
- Fixes the default behavior on full-screen in-app messages to display as modals only on tablet screen sizes.
- Previously, full-screen messages would erroneously default to modal presentations on some larger phones.
- Fixes a crash when dismissing a slideup in-app message before it has finished presenting.
- Fixes an issue on iOS 18.0+ where the in-app message UI would persist on the screen when attempting to dismiss the message before it has finished presenting.
- Updates custom attribute value, custom event, and purchase string validation to use a 255 character maximum instead of a 255 byte maximum.
Added
- The
Braze.set(identifierForAdvertiser:)
andBraze.set(identifierForVendor:)
methods now accept anil
parameter value to remove the identifiers from the user profile. - Adds additional safeguards to
Braze.Notifications.subscribeToUpdates
to ensure the same Push notification can't trigger the update closure multiple times.
10.2.0
10.2.0
Fixed
- Updates the content card image background color to be clear.
Added
- Adds support for an upcoming Braze SDK Debugging tool.
10.1.0
10.1.0
Fixed
- Fixes an issue affecting the Objective-C variants of
BrazeDelegate
,BrazeContentCardUIViewControllerDelegate
andBrazeInAppMessageUIDelegate
.- When setting these delegates in Objective-C a second time, the delegate would end up being set to
nil
. - This issue has been resolved and the delegates can now be set multiple times without issue.
- When setting these delegates in Objective-C a second time, the delegate would end up being set to
Added
- Adds support for delayed SDK initialization, allowing you to create the Braze instance outside of
application(_:didFinishLaunchingWithOptions:)
.- The SDK can now be initialized asynchronously, while conserving the ability to process incoming Braze push notifications.
- Symbol documentation:
Braze.prepareForDelayedInitialization(pushAutomation:)
- Integration documentation: Delayed Initialization
- Sample app: PushNotifications-DelayedInitialization.
- Adds the ability to prevent showing an in-app message to a different user than the one that triggered the in-app message.
- To enable this feature, set
Braze.Configuration.preventInAppMessageDisplayForDifferentUser
totrue
(default:false
).
- To enable this feature, set
10.0.0
10.0.0
Breaking
- The following changes have been made when subscribing to Push events with
Braze.Notifications.subscribeToUpdates(payloadTypes:_:)
:- The
update
closure will now be triggered by both "Push Opened" and "Push Received" events by default. Previously, it would only be triggered by "Push Opened" events.- To continue subscribing only to "Push Opened" events, pass in
[.opened]
for the parameterpayloadTypes
. Alternatively, implement yourupdate
closure to check that thetype
from theBraze.Notifications.Payload
is.opened
.
- To continue subscribing only to "Push Opened" events, pass in
- When receiving a push notification with
content-available: true
, theBraze.Notifications.Payload.type
will now be.received
instead of.opened
.
- The
- Marks the following deprecated APIs as unavailable:
Braze.Configuration.Api.Flavor
Braze.Configuration.Api.flavor
Braze.Configuration.Api.SdkMetadata
Braze.Configuration.Api.addSdkMetadata(_:)
Braze.ContentCard.ClickAction.uri(_:useWebview:)
Braze.ContentCard.ClickAction.uri
Braze.InAppMessage.ClickAction.uri(_:useWebview:)
Braze.InAppMessage.ClickAction.uri
Braze.InAppMessage.ModalImage.imageUri
Braze.InAppMessage.Full.imageUri
Braze.InAppMessage.FullImage.imageUri
Braze.InAppMessage.Themes.default
Braze.deviceId(queue:completion:)
Braze._objc_deviceId(completion:)
Braze.deviceId()
Braze.User.setCustomAttributeArray(key:array:fileID:line:)
Braze.User.addToCustomAttributeArray(key:value:fileID:line:)
Braze.User.removeFromCustomAttributeArray(key:value:fileID:line:)
Braze.User._objc_addToCustomAttributeArray(key:value:)
Braze.User._objc_removeFromCustomAttributeArray(key:value:)
gifViewProvider
GifViewProvider.default
- Removes the deprecated APIs:
Braze.Configuration.DeviceProperty.pushDisplayOptions
Braze.InAppMessageRaw.Context.Error.extraProcessClickAction
- Removes the deprecated
BrazeLocation
class in favor ofBrazeLocationProvider
.
Fixed
- Fixes a crash when handling a scheme-based deep link containing a registered
applink
domain (e.g.applinks:example.com
with a deep link toapp://example.com/path
).
Added
- Adds support to subscribe to "Push Received" events via
Braze.Notifications.subscribeToUpdates(payloadTypes:_:)
.- The following notifications will trigger this subscription:
- Notifications received in the foreground
- Notifications with the field
content-available: true
received in the foreground or background
- The following notifications will not trigger this subscription:
- Notifications received while terminated
- Notifications received in the background without the field
content-available: true
- The new parameter
payloadTypes
will allow you to subscribe to "Push Opened" events, "Push Received" events, or both. If the parameter is omitted, it will subscribe to both by default. - If you are using manual push integration, you will need to first implement
UNUserNotificationCenter.userNotificationCenter(_:willPresent:withCompletionHandler:)
, and make sure to callBraze.Notifications.handleForegroundNotification(notification:)
within your implementation. Then, usesubscribeToUpdates
as noted above. See our guide on push notification integration for more info.
- The following notifications will trigger this subscription:
- Adds the public property
Braze.Notifications.Payload.type
. - Adds the
Braze.WebViewBridge.ScriptMessageHandler.init(braze:)
initializer enabling a simpler way to initialize theScriptMessageHandler
for adding it to user-provided web views.