Releases: braze-inc/braze-swift-sdk
Releases · braze-inc/braze-swift-sdk
11.1.1
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.
9.3.1
9.3.1
Fixed
- Fixes an issue where the
Braze.FeatureFlag.subscribeToUpdates(_:)
callback was not triggered at app launch when the cached feature flags matched the remote feature flags. - Fixes an issue in Objective-C projects where the return value of
Braze.FeatureFlag.jsonProperty(key:)
would incorrectly encode any entry value equal tonull
under certain conditions.[String: Any]
dictionaries returned by the Swift API will now dropnull
values.NSDictionary
objects returned by the Objective-C API will now encodenull
values asNSNull
.
9.3.0
9.3.0
Added
- Adds Objective-C support for the
BrazeInAppMessageUIDelegate.inAppMessage(_:prepareWith:)
method.- Customization of
ViewAttributes
via theattributes
property is not available in the Objective-C version ofPresentationContextRaw
.
- Customization of
- Adds
Braze.FeatureFlag.jsonProperty(key:type:decoder:)
to decodejsonobject
type Feature Flag properties into customDecodable
types. - Deprecates the existing Feature Flag APIs, to be removed in a future version:
Braze.FeatureFlag.jsonStringProperty(key:)
has been deprecated.Braze.FeatureFlag.jsonObjectProperty(key:)
has been deprecated in favor ofBraze.FeatureFlag.jsonProperty(key:)
.
Fixed
- Fixes an issue where the
preferredOrientation
on the presentation context of an in-app message would not be respected.