- The native iOS bridge uses Braze iOS SDK 4.0.2.
- The native Android bridge uses Braze Android SDK 13.1.2.
- The minimum supported Flutter version is 1.10.0.
- Adds a public repository for the Braze Flutter SDK here: https://github.com/braze-inc/braze-flutter-sdk.
- We look forward to the community's feedback and are excited for any contributions!
- The native Android bridge uses Braze Android SDK 13.0.0.
- The native iOS bridge uses Braze iOS SDK 3.34.0.
- Adds
BrazePlugin.setGoogleAdvertisingId()
to set the Google Advertising ID and the associated Ad-Tracking Enabled field for Android. This is a no-op on iOS.
- Fixes an issue where the Braze Android SDK's
Appboy.setLogLevel()
method wasn't respected.
- The native Android bridge uses Braze Android SDK 12.0.0.
- The native iOS bridge uses Braze iOS SDK 3.31.0.
- Adds support for the Braze plugin to be used with Android V2 Embedding APIs. Integrations using V1 Embedding will also continue to work.
- Allows the Android Braze plugin to be used with multiple Flutter engines.
- The native iOS bridge uses Braze iOS SDK 3.30.0.
- Allows the iOS Braze plugin to be used with multiple Flutter engines.
- The native Android bridge uses Braze Android SDK 11.0.0.
- The native iOS bridge uses Braze iOS SDK 3.29.1.
- The native iOS bridge uses Braze iOS SDK 3.27.0. This release adds support for iOS 14 and requires XCode 12. Please read the Braze iOS SDK changelog for details.
- The native iOS bridge uses Braze iOS SDK 3.26.1.
- The native Android bridge uses Braze Android SDK 8.1.0.
- The native iOS bridge uses Braze iOS SDK 3.26.0.
- Fixed an issue where
setBoolCustomUserAttribute
always set the attribute totrue
on iOS.
- The native Android bridge uses Braze Android SDK 7.0.0.
- The native iOS bridge uses Braze iOS SDK 3.22.0.
- The native iOS bridge uses Braze iOS SDK 3.21.3.
- The native Android bridge uses Braze Android SDK 4.0.2.
- If you are using a custom
IInAppMessageManagerListener
, then you will need to define new methods added to that interface in Braze Android SDK 4.0.0. See theMainActivity.kt
file of our sample app for a reference example.
- If you are using a custom
- Added
BrazePlugin.launchContentCards()
andBrazePlugin.refreshContentCards()
to natively display and refresh Content Cards. - Adds a Dart callback for receiving Braze Content Card data in the Flutter host app.
- Similar to in-app messages, you will need to subscribe to Content Card updates in your native app code and pass Content Card objects to the Dart layer. Those objects will then be passed to your callback within a
List<BrazeContentCard>
instance. - To set the callback, call
BrazePlugin.setBrazeContentCardsCallback()
from your Flutter app with a function that takes aList<BrazeContentCard>
instance.- The
BrazeContentCard
object supports a subset of fields available in the native model objects, includingdescription
,title
,image
,url
,extras
, and more.
- The
- On Android, you will need to register an
IEventSubscriber<ContentCardsUpdatedEvent>
instance and pass returned Content Card objects to the Dart layer usingBrazePlugin.processContentCards(contentCards)
.- See the
MainActivity.kt
file of our sample app for a reference example.
- See the
- On iOS, you will need to create an
NSNotificationCenter
listener forABKContentCardsProcessedNotification
events and pass returned Content Card objects to the Dart layer usingBrazePlugin.processContentCards(contentCards)
.- See the
AppDelegate.swift
file of our sample app for a reference example.
- See the
- Similar to in-app messages, you will need to subscribe to Content Card updates in your native app code and pass Content Card objects to the Dart layer. Those objects will then be passed to your callback within a
- Added support for logging Content Card analytics to Braze using
BrazeContentCard
instances. SeelogContentCardClicked()
,logContentCardImpression()
, andlogContentCardDismissed()
on theBrazePlugin
interface.
- Fixed an issue where the Braze Kotlin plugin file's directory structure did not match its package structure.
- The native Android bridge uses Braze Android SDK 3.8.0.
- Updated the native iOS bridge to Braze iOS SDK 3.20.4.
Important: This patch updates the Braze iOS SDK Dependency from 3.20.1 to 3.20.2, which contains important bugfixes. Integrators should upgrade to this patch version. Please see the Braze iOS SDK Changelog for more information.
- Updated the native iOS bridge to Braze iOS SDK 3.20.2.
Important This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 0.5.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 0.5.2 or above if you make use of HTML in-app messages.
- Updated the native iOS bridge to Braze iOS SDK 3.20.1.
Important This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 0.5.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 0.5.2 or above if you make use of HTML in-app messages.
- The native iOS bridge uses Braze iOS SDK 3.20.0.
- Important: Braze iOS SDK 3.20.0 contains updated push token registration methods. We recommend upgrading to these methods as soon as possible to ensure a smooth transition as devices upgrade to iOS 13. In
application:didRegisterForRemoteNotificationsWithDeviceToken:
, replace
[[Appboy sharedInstance] registerPushToken:
[NSString stringWithFormat:@"%@", deviceToken]];
with
[[Appboy sharedInstance] registerDeviceToken:deviceToken]];
registerPushToken()
was renamed toregisterAndroidPushToken()
and is now a no-op on iOS. On iOS, push tokens must now be registered through native methods.
- The native iOS bridge uses Braze iOS SDK 3.18.0.
- The native Android bridge uses Braze Android SDK 3.6.0.
- Added the following new field to
BrazeInAppMessage
:zippedAssetsUrl
.- Note that a known issue in the iOS plugin prevents HTML IAMs from working reliably with the Dart in-app message callback. Android is not affected.
- The native iOS bridge uses Braze iOS SDK 3.15.0.
- The native Android bridge uses Braze Android SDK 3.5.0.
- Support for the Android configuration parameter
com_appboy_inapp_show_inapp_messages_automatically
has been removed.- To control whether an in-app message object should be displayed natively or not, create and register an instance of
IInAppMessageManagerListener
in your native Android code and implement decisioning in thebeforeInAppMessageDisplayed
method. SeeMainActivity
in our sample app for an example.
- To control whether an in-app message object should be displayed natively or not, create and register an instance of
- On Android, in-app message objects are no longer sent automatically to the Dart in-app message callback after calling
BrazePlugin.setBrazeInAppMessageCallback()
in your Dart code.- Similar to iOS, you will need to implement a delegate interface in your native app code and pass in-app message objects to the Dart layer for passing to the callback.
- On Android, the delegate interface is
IInAppMessageManagerListener
and the method for passing objects to Dart isBrazePlugin.processInAppMessage(inAppMessage)
. - See the sample
IInAppMessageManagerListener
implementation in theMainActivity.kt
file of our sample app for an example. - This approach gives the integrator more flexibility in deciding when a message should be displayed natively, discarded, or passed into the Dart layer.
- Added support for logging in-app message analytics to Braze using
BrazeInAppMessage
instances. SeelogInAppMessageClicked
,logInAppMessageImpression
, andlogInAppMessageButtonClicked
on theBrazePlugin
interface.
- Added the following new fields to
BrazeInAppMessage
:imageUrl
,useWebView
,duration
,clickAction
,dismissType
,messageType
- Added the following new fields to
BrazeButton
:useWebView
,clickAction
.
- The native iOS bridge uses Braze iOS SDK 3.14.0.
- The native Android bridge uses Braze Android SDK 3.2.1.
- Adds
addAlias()
to the public API interface. - Adds
requestLocationInitialization()
to the public API interface. - Adds
getInstallTrackingId()
to the public API interface. - Adds support for disabling native in-app message display on Android.
- To disable automatic in-app message display, create a boolean element named
com_appboy_inapp_show_inapp_messages_automatically
in your Android app'sappboy.xml
and set it tofalse
. - Note: Disabling automatic in-app message display was already possible for iOS. For instructions, see
README.md
.
- To disable automatic in-app message display, create a boolean element named
- Adds a Dart callback for receiving Braze in-app message data in the Flutter host app.
- Analytics are not currently supported on messages displayed through the callback.
- To set the callback, call
BrazePlugin.setBrazeInAppMessageCallback()
from your Flutter app with a function that takes aBrazeInAppMessage
instance.- The
BrazeInAppMessage
object supports a subset of fields available in the native model objects, includinguri
,message
,header
,buttons
, andextras
.
- The
- The callback should begin to function on Android immediately after being set.
- On iOS, you will additionally need to implement the
ABKInAppMessageControllerDelegate
delegate as described in our public documentation. YourbeforeInAppMessageDisplayed
delegate implementation must callBrazePlugin.process(inAppMessage)
. For an example, seeAppDelegate.swift
in our example app.
- Formatted
braze_plugin.dart
.
- Removes the unused
dart:async
import inbraze_plugin.dart
. - Makes
_callStringMethod
private inbraze_plugin.dart
. - Adds basic dartdoc to the public API interface.
- Updates the version of Kotlin used by the Android plugin from
1.2.71
to1.3.11
.
- Initial release.
- The native iOS bridge uses Braze iOS SDK 3.12.0.
- The native Android bridge uses Braze Android SDK 3.1.0.