⚠️ This version now requires Cordova Android 13.0.0.⚠️ - Refer to the Cordova release announcement for a full list of project dependency requirements.
- Updated the native Android bridge from Braze Android SDK 30.3.0 to 32.1.0.
- Updated the native iOS bridge from Braze Swift SDK 9.2.0 to 10.1.0.
- Fixed the native-to-JavaScript translation of in-app message strings, where nested escape characters were previously being removed.
- Fixed the
subscribeToInAppMessage
method on iOS to respect theuseBrazeUI
setting.- Updated the Android implementation to match iOS by using the
DISCARD
option instead ofDISPLAY_LATER
if the default Braze UI is not used.
- Updated the Android implementation to match iOS by using the
- Fixed the
getContentCardsFromServer
method to trigger an error callback on iOS when cards have failed to refresh.
- Added the
getUserId()
method to get the ID of the current user. This method will returnnull
if the current user is anonymous. - Added support for new Feature Flag property types and APIs for accessing them:
getFeatureFlagTimestampProperty(id, key)
for accessing Int Unix UTC millisecond timestamps asnumber
s.getFeatureFlagImageProperty(id, key)
for accessing image URLs asstring
s.getFeatureFlagJSONProperty(id, key)
for accessing JSON objects asobject
types.
- Added
setLocationCustomAttribute(key, latitude, longitude)
to set a location custom attribute.
- Updated the native iOS bridge from Braze Swift SDK 9.1.0 to 9.2.0.
- Added the following properties to the Content Card model:
isTest
isControl
(Note: If you're implementing your own UI, Control Cards should not be rendered, but you should manually log analytics for them.)
- Updated the native iOS bridge from Braze Swift SDK 9.0.0 to 9.1.0.
- Updated the native iOS bridge from Braze Swift SDK 7.7.0 to 9.0.0.
- Added support to modify the allow list for Braze tracking properties via the following JavaScript properties and methods:
TrackingProperty
string enumTrackingPropertyAllowList
object interfaceupdateTrackingPropertyAllowList
method- For details, refer to the Braze iOS Privacy Manifest documentation.
- Added the
setAdTrackingEnabled
method to setadTrackingEnabled
flag on iOS and both theadTrackingEnabled
flag and the Google Advertising ID on Android. - Added
BrazePlugin.subscribeToInAppMessage()
which allows you to listen for new in-app messages from the JavaScript plugin and choose whether or not to use the default Braze UI to display in-app messages. - Added support for logging analytics and functionality for in-app messages.
BrazePlugin.logInAppMessageImpression(message)
BrazePlugin.logInAppMessageClicked(message)
BrazePlugin.loginAppMessageButtonClicked(message, buttonId)
BrazePlugin.hideCurrentInAppMessage()
- Added support for manually performing the action of an in-app message when using a custom UI.
BrazePlugin.performInAppMessageAction(message)
BrazePlugin.performInAppMessageButtonAction(message, buttonId)
- Updated the native Android bridge from Braze Android SDK 30.1.1 to 30.3.0.
- Added new Android feature support that can be added in your
config.xml
:- Ability to set the session timeout behavior to be based either on session start or session end events.
<preference name="com.braze.is_session_start_based_timeout_enabled" value="false" />
- Ability to set the user-facing name as seen via
NotificationChannel.getName
for the Braze defaultNotificationChannel
.<preference name="com.braze.default_notification_channel_name" value="name" />
- Ability to set the user-facing description as seen via
NotificationChannel.getDescription
for the Braze defaultNotificationChannel
.<preference name="com.braze.default_notification_channel_description" value="description" />
- Ability to set whether a Push Story is automatically dismissed when clicked.
<preference name="com.braze.does_push_story_dismiss_on_click" value="true" />
- Ability to set whether the use of a fallback Firebase Cloud Messaging Service is enabled.
<preference name="com.braze.is_fallback_firebase_messaging_service_enabled" value="true" />
- Ability to set the classpath for the fallback Firebase Cloud Messaging Service.
<preference name="com.braze.fallback_firebase_messaging_service_classpath" value="your-classpath" />
- Ability to set whether the Content Cards unread visual indication bar is enabled.
<preference name="com.braze.is_content_cards_unread_visual_indicator_enabled" value="true" />
- Ability to set whether the Braze will automatically register tokens in
com.google.firebase.messaging.FirebaseMessagingService.onNewToken
.<preference name="com.braze.is_firebase_messaging_service_on_new_token_registration_enabled" value="true" />
- Ability to set whether Braze will add an activity to the back stack when automatically following deep links for push.
<preference name="com.braze.is_push_deep_link_back_stack_activity_enabled" value="true" />
- Ability to set the activity that Braze will add to the back stack when automatically following deep links for push.
<preference name="com.braze.push_deep_link_back_stack_activity_class_name" value="your-class-name" />
- Ability to set if Braze should automatically opt-in the user when push is authorized by Android.
<preference name="com.braze.should_opt_in_when_push_authorized" value="true" />
- Ability to set the session timeout behavior to be based either on session start or session end events.
- Added new iOS feature support that can be added in your
config.xml
:- Ability to set the minimum logging level for
Braze.Configuration.Logger
.<preference name="com.braze.ios_log_level" value="2" />
- Ability to set if a randomly generated UUID should be used as the device ID.
<preference name="com.braze.ios_use_uuid_as_device_id" value="YES" />
- Ability to set the interval in seconds between automatic data flushes.
<preference name="com.braze.ios_flush_interval_seconds" value="10" />
- Ability to set whether the request policy for
Braze.Configuration.Api
should be automatic or manual.<preference name="com.braze.ios_use_automatic_request_policy" value="YES" />
- Ability to set if a user’s notification subscription state should automatically be set to optedIn when push permissions are authorized.
<preference name="com.braze.should_opt_in_when_push_authorized" value="YES" />
- Ability to set the minimum logging level for
- Added
BrazePlugin.setLastKnownLocation()
to set the last known location for the user. - Updated the native iOS bridge from Braze Swift SDK 7.6.0 to 7.7.0.
- Updated the native Android bridge from Braze Android SDK 30.0.0 to 30.1.1.
- Fixed the
getDeviceId
method to return the value as a success instead of an error on iOS.
- Updated the native Android bridge from Braze Android SDK 27.0.1 to 30.0.0.
- Updated the native iOS bridge from Braze Swift SDK 6.6.0 to 7.6.0.
- Renamed the
Banner
Content Card type toImageOnly
:ContentCardTypes.BANNER
→ContentCardTypes.IMAGE_ONLY
- On Android, if the XML files in your project contain the word
banner
for Content Cards, it should be replaced withimage_only
.
BrazePlugin.getFeatureFlag(id)
will now returnnull
if the feature flag does not exist.BrazePlugin.subscribeToFeatureFlagsUpdates(function)
will only trigger when a refresh request completes with success or failure, and upon initial subscription if there was previously cached data from the current session.- Removed the deprecated method
registerAppboyPushMessages
. UsesetRegisteredPushToken
instead.
- Added the ability to set a minimum trigger action time interval for Android and iOS.
- To enable this feature, add the line
<preference name="com.braze.trigger_action_minimum_time_interval_seconds" value="30" />
in yourconfig.xml
.
- To enable this feature, add the line
- Added the ability to configure the app group ID for iOS push extensions.
- To enable this feature, add the line
<preference name="com.braze.ios_push_app_group" value="your-app-group" />
in yourconfig.xml
.
- To enable this feature, add the line
- Added support for automatically forwarding universal links in iOS.
- To enable this feature, add the line
<preference name="com.braze.ios_forward_universal_links" value="YES" />
in yourconfig.xml
.
- To enable this feature, add the line
- Updated the native Android version from Braze Android SDK 26.3.2 to 27.0.1.
- Added
logFeatureFlagImpression(id)
. - Updated the native iOS version from Braze Swift SDK 6.5.0 to 6.6.0.
- Added support for nested custom user attributes.
- The
setCustomUserAttribute
method now accepts objects and arrays of objects. - Added an optional
merge
parameter to thesetCustomUserAttribute
method. This is a non-breaking change. - Please see our public docs for more information.
- The
- Exposed the
braze
instance as a convenience static property on iOS viaBrazePlugin.braze
.- This makes it easier to work with tools such as Capacitor by Ionic.
- Updated the native Android version from Braze Android SDK 26.3.1 to 26.3.2.
- Updated the native iOS version from Braze Swift SDK 5.13.0 to 6.5.0.
- Updated the native Android version from Braze Android SDK 25.0.0 to 26.3.1.
- Added support for Braze SDK Authentication.
- Enabled on Android via
<preference name="com.braze.sdk_authentication_enabled" value="true" />
. - Enabled on iOS via
<preference name="com.braze.sdk_authentication_enabled" value="YES" />
. - Updated
changeUser()
to accept an optional second parameter for an SDK Auth token, e.g.changeUser("user id here", "jwt token here")
. - Added
subscribeToSdkAuthenticationFailures()
which listens for SDK authentication failures. - Added
setSdkAuthenticationSignature()
to set a Braze SDK Authentication signature JWT token.
- Enabled on Android via
- Updated these Feature Flag methods to return promises instead of using a callback parameter
getAllFeatureFlags()
getFeatureFlag(id)
getFeatureFlagBooleanProperty(id, key)
getFeatureFlagStringProperty(id, key)
getFeatureFlagNumberProperty(id, key)
- To get a boolean property, for example, you can now use the following syntax:
const booleanProperty = await BrazePlugin.getFeatureFlagBooleanProperty("feature-flag-id", "property-key");
- Changed
subscribeToFeatureFlagUpdates
tosubscribeToFeatureFlagsUpdates
.
- Renamed instances of
Appboy
toBraze
.- To ensure that your project is properly migrated to the new naming conventions, note and replace the following instances in your project:
- The plugin has been renamed from
cordova-plugin-appboy
tocordova-plugin-braze
.- Ensure that you run
cordova plugin remove cordova-plugin-appboy
and then re-add the plugin using the instructions in the README.
- Ensure that you run
- This GitHub repository has been moved to the URL
https://github.com/braze-inc/braze-cordova-sdk
. - In your project's
config.xml
file, rename instances ofcom.appboy
tocom.braze
for each of your configuration property keys. - The JavaScript class interface
AppboyPlugin
has been renamed toBrazePlugin
.
- The plugin has been renamed from
- To ensure that your project is properly migrated to the new naming conventions, note and replace the following instances in your project:
- Updated to Braze Android SDK 25.0.0.
- Updated to Braze Swift SDK 5.13.0.
- This update fixes the iOS behavior introduced in version
2.33.0
when logging clicks for content cards. CallinglogContentCardClicked
now only sends a click event for metrics, instead of both sending a click event as well as redirecting to the associatedurl
field.- For instance, to log a content card click and redirect to a URL, you will need two commands:
BrazePlugin.logContentCardClicked(contentCardId); // Your own custom implementation YourApp.openUrl(contentCard["url"]);
- This brings the iOS behavior to match pre-
2.33.0
versions and bring parity with Android's behavior.
- This update fixes the iOS behavior introduced in version
- Added property methods for Feature Flags:
getFeatureFlagBooleanProperty(id, key)
,getFeatureFlagStringProperty(id, key)
,getFeatureFlagNumberProperty(id, key)
- Added support for the upcoming Braze Feature Flags product with
getFeatureFlag()
,getAllFeatureFlags()
,refreshFeatureFlags()
, andsubscribeToFeatureFlagUpdates()
.
- Updated to Braze Swift SDK 5.11.0.
- Removed automatic requests for App Tracking Transparency permissions on iOS.
- Migrated the iOS plugin to use the new Braze Swift SDK (5.8.1).
- News Feed UI is no longer supported on iOS.
- This migration requires re-identifying users. To do so, you must call the
changeUser
method on the Braze instance for non-anonymous users. You can read more about it here.
- Updated to Braze Android SDK 24.1.0.
- Updated the Android bridge to Kotlin.
<preference name="GradlePluginKotlinEnabled" value="true" />
is now required in yourconfig.xml
.
- Removed
setAvatarImageUrl()
.
- Added an
main
value topackage.json
.
- Added
setRegisteredPushToken()
which replaces the deprecatedregisterAppboyPushMessages()
method.
- Updated to Braze Android SDK 23.0.1.
- Added a method
requestPushPermission()
for Android API 33 to request push permission prompts from the system on Android 13 devices.
- Added the ability to set the session timeout for iOS (String) in seconds.
- Add
<preference name="com.appboy.com.appboy.ios_session_timeout" value="your_timeout" />
to yourconfig.xml
, replacingyour_timeout
with the desired number of seconds.
- Add
- Fixed a bug where a Content Card without a key-value pair could cause a crash.
- Updated to Braze Android SDK 21.0.0.
- Removed "logContentCardsDisplayed" from the javascript plugin.
- Updated to Braze Android SDK 19.0.0.
- Updated to Braze iOS SDK 4.4.2.
- Updated to Braze Android SDK 18.0.1.
- Fixed an error around locating certain iOS resources when integrating the SDK.
- Updated to Braze Android SDK 17.0.0.
- Updated to Braze iOS SDK 4.4.0.
- Added
addToSubscriptionGroup()
andremoveFromSubscriptionGroup()
.
- Updated to Braze Android SDK 16.0.0.
- Fixed an issue in pre Android P WebViews where the system WebView would not properly handle view focus being returned to it.
- https://issuetracker.google.com/issues/36915710 for more information.
- This fix is applied by default and can be disabled via
com.braze.android_apply_cordova_webview_focus_request_fix
in yourconfig.xml
. - When enabled, this fix sets a custom In App Message view vrapper factory with the native Android SDK, potentially overriding any other custom set view factories.
- Updated to Braze Android SDK 15.0.0.
- Updated to Braze iOS SDK 4.3.2.
- Added
Other
,Unknown
,Not Applicable
, andPrefer not to Say
options for user gender.
- Updated to Braze Android SDK 14.0.1.
- Updated to Braze iOS SDK 4.3.0.
- (minor) Changed logcat tag for Android plugin to be
BrazeCordova
.
- Updated to Braze Android SDK 13.1.2.
- Updated to Braze Android SDK 13.0.0.
- Added the ability to delay automatic session tracking for Android.
<preference name="com.appboy.android_disable_auto_session_tracking" value="true" />
in yourconfig.xml
.
- Updated to Braze iOS SDK 3.31.1.
- Fixed an issue on iOS where the plugin was incompatible with other Cordova plugins that have the
use_frameworks
Cocoapods setting in theirPodfile
.
- Added the ability to disable
UNAuthorizationOptionProvisional
on iOS. Withinconfig.xml
, setcom.appboy.ios_disable_un_authorization_option_provisional
toYES
to disableUNAuthorizationOptionProvisional
.
- Added the method
getDeviceId()
to the javascript plugin.
- Updated to Braze iOS SDK 3.29.1.
- Updated to Braze Android SDK 11.0.0.
- Fixed an issue where the plugin would automatically add the In-app Purchase capability to XCode projects.
- Added the methods
addAlias()
andsetLanguage()
to the javascript plugin.
- Updated to Braze Android SDK 10.0.0.
- 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.
- Updated to Braze Android SDK 8.1.0.
- Updated to Braze iOS SDK 3.26.1.
- Added the ability to display notifications while app is in the foreground in iOS. Within
config.xml
setcom.appboy.display_foreground_push_notifications
to"YES"
to enable this.
- Updated to Braze iOS SDK 3.23.0.
- Updated to Braze Android SDK 8.0.1.
- Reverted iOS plugin to use framework tag in
plugin.xml
. - Updated to Braze Android SDK 7.0.0.
- Added the Content Cards methods
requestContentCardsRefresh(), getContentCardsFromServer(), getContentCardsFromCache(), launchContentCards(), logContentCardsDisplayed(), logContentCardClicked(), logContentCardImpression(), logContentCardDismissed()
to the javascript plugin.getContentCardsFromServer(), getContentCardsFromCache()
both take a success and error callback to handle return values.
- Updated to Braze Android SDK 4.0.2.
- Updated to Braze Android SDK 3.8.0.
- Pinned Android Gradle plugin version to 3.5.1 in
build-extras.gradle
.- Addresses #46.
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 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 2.11.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 2.11.2 or above if you make use of HTML in-app messages.
- Updated 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 2.11.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 2.11.2 or above if you make use of HTML in-app messages.
- Updated to Braze iOS SDK 3.20.0.
- Important: Braze iOS SDK 3.20.0 contains updated push token registration methods. We recommend upgrading to this version as soon as possible to ensure a smooth transition as devices upgrade to iOS 13.
- Removes the Feedback feature.
submitFeedback()
andlaunchFeedback()
have been removed from theAppboyPlugin
interface.
- Updated to Braze Android SDK 3.7.0.
- Added ability to configure location collection in preferences. Braze location collection is now disabled by default.
- Set
com.appboy.enable_location_collection
totrue/false
on Android. - Set
com.appboy.enable_location_collection
toYES/NO
on iOS.
- Set
- Added ability to configure geofences in preferences. Note that the geofences branch is still required to use Braze Geofences out of the box.
- Set
com.appboy.geofences_enabled
totrue/false
on Android. - Set
com.appboy.geofences_enabled
toYES/NO
on iOS.
- Set
- Fixed an issue in the iOS plugin where custom endpoints were not correctly getting substituted for the actual server endpoints.
- Updated to Braze iOS SDK 3.14.1.
- Added ability for plugin to automatically collect the IDFA information on iOS. To enable, set
com.appboy.ios_enable_idfa_automatic_collection
toYES
in yourconfig.xml
project file.-
<platform name="ios"> <preference name="com.appboy.ios_enable_idfa_automatic_collection" value="YES" /> </platform>
-
- Fixed an issue in the Android plugin where the Braze SDK could be invoked before
pluginInitialize
was called by Cordova. The plugin now explicitly initializes the SDK before any SDK or Android lifecycle methods are called.- Fixes #38
- Updated to Braze iOS SDK 3.14.0.
- Updated to Braze Android SDK 3.2.2.
- Changed the iOS plugin to use Cocoapods instead of a framework integration.
- Improved the look and feel of in-app messages to adhere to the latest UX and UI best practices. Changes affect font sizes, padding, and responsiveness across all message types. Now supports button border styling.
- Fixed the Android plugin not respecting decimal purchase prices.
- Fixes #36.
- Changed the iOS frameworks to be automatically embedded in the
plugin.xml
.- This fixes the "dyld: Library not loaded" issue raised in XCode if the frameworks were not manually embedded.
- Adds method to immediately flush any pending data via
requestImmediateDataFlush()
.
- Fixes an issue where sending push on Android resulted in a crash in version 2.7.0. Past versions (before 2.7.0) are unaffected.
- Updates Braze Android version to 3.0.0+
- Removes GCM push registration methods. In your config.xml
com.appboy.android_automatic_push_registration_enabled
andcom.appboy.android_gcm_sender_id
, now have no effect on push registration.
- Removes GCM push registration methods. In your config.xml
- Updates Braze iOS version to 3.9.0.
- Fixes an issue where the Cordova 8.0.0+ build system would convert numeric preferences in the
config.xml
to be floating point numbers.- Numeric preferences, such as sender ids, now should be prefixed with
str_
for correct parsing. I.e.<preference name="com.appboy.android_fcm_sender_id" value="str_64422926741" />
.
- Numeric preferences, such as sender ids, now should be prefixed with
- Updates Braze Android version to 2.6.0+
- Updates Braze Android version to 2.4.0+.
- Adds Firebase Cloud Messaging automatic registration support. GCM automatic registration should be disabled by setting the config value "com.appboy.android_automatic_push_registration_enabled" to "false". See the Android sample-project's
config.xml
for an example. FCMconfig.xml
keys below.- "com.appboy.firebase_cloud_messaging_registration_enabled" ("true"/"false")
- "com.appboy.android_fcm_sender_id" (String)
- The Firebase dependencies
firebase-messaging
andfirebase-core
are now included automatically as part of the plugin.
- Updates Braze Android version to 2.2.5+.
- Updates Braze iOS version to 3.3.4.
- Adds
wipeData()
,enableSdk()
, anddisableSdk()
methods to the plugin.
- Fixes a subdirectory incompatibility issue with Cordova 7.1.0
- Adds configuration for custom API endpoints on iOS and Android using the config.xml.
- Android preference: "com.appboy.android_api_endpoint"
- iOS preference: "com.appboy.ios_api_endpoint"
- Adds getter for all News Feed cards. Thanks to @cwelk for contributing.
- Adds a git branch
geofence-branch
for registering geofences with Google Play Services and messaging on geofence events. Please reach out to [email protected] for more information about this feature. The branch has geofences integrated for both Android and iOS.
- Fixes in-app messages display issue on iOS.
- Updates Appboy iOS version to 2.29.0
- Updates Appboy Android version to 2.0+
- Fixes original in-app messages not being requested on Android.
- Updates Appboy Android version to 1.18+
- Updates Appboy iOS version to 2.25.0
- Adds the ability to configure the Android Cordova SDK using the config.xml. See the Android sample-project's
config.xml
for an example.- Supported keys below, see the AppboyConfig.Builder javadoc for more details
- "com.appboy.api_key" (String)
- "com.appboy.android_automatic_push_registration_enabled" ("true"/"false")
- "com.appboy.android_gcm_sender_id" (String)
- "com.appboy.android_small_notification_icon" (String)
- "com.appboy.android_large_notification_icon" (String)
- "com.appboy.android_notification_accent_color" (Integer)
- "com.appboy.android_default_session_timeout" (String)
- "com.appboy.android_handle_push_deep_links_automatically" ("true"/"false")
- "com.appboy.android_log_level" (Integer) can also be configured here, for obtaining debug logs from the Appboy Android SDK
- Updates the Android Cordova SDK to use the Appboy Lifecycle listener to handle session and in-app message registration
- Adds support for iOS 10 push registration and handling using the UNUserNotificationCenter.
- Adds functionality for turning off automatic push registration on iOS. To disable, add the preference
com.appboy.ios_disable_automatic_push_handling
with a value ofYES
.
- Updates to add functionality for turning off automatic push registration on iOS. If you want to turn off iOS default push registration, add the preference
com.appboy.ios_disable_automatic_push_registration
with a value ofYES
. - Includes patch for iOS 10 push open bug. See https://github.com/braze-inc/braze-ios-sdk/blob/master/CHANGELOG.md#2240 for more information.
- Updates Appboy iOS version to 2.24.2.
- Updates Appboy Android version to 1.15+.
- Updates plugin to configure Android via parameters to eliminate need for post-install modifications on Android. Ported from https://github.com/Appboy/appboy-cordova-sdk/tree/feature/android-variable-integration.
- Initial release. Adds support for Appboy Android version 1.12+ and Appboy iOS version 2.18.1.