Skip to content

Latest commit

 

History

History
542 lines (410 loc) · 31.4 KB

CHANGELOG.md

File metadata and controls

542 lines (410 loc) · 31.4 KB

⚠️ In version 2.33.0, we changed the iOS bridge from AppboyKit, which is written in Objective-C, to the new Swift SDK. If you are upgrading from a version below 2.33.0 to a version above 2.33.0, please read the instructions to ensure a smooth transition and backward compatibility.

10.0.0

Breaking
Fixed
  • 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 the useBrazeUI setting.
    • Updated the Android implementation to match iOS by using the DISCARD option instead of DISPLAY_LATER if the default Braze UI is not used.
  • Fixed the getContentCardsFromServer method to trigger an error callback on iOS when cards have failed to refresh.
Added
  • Added the getUserId() method to get the ID of the current user. This method will return null 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 as numbers.
    • getFeatureFlagImageProperty(id, key) for accessing image URLs as strings.
    • getFeatureFlagJSONProperty(id, key) for accessing JSON objects as object types.
  • Added setLocationCustomAttribute(key, latitude, longitude) to set a location custom attribute.

9.2.0

Added

9.1.0

Added
  • 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.

9.0.0

Breaking
Added
  • Added support to modify the allow list for Braze tracking properties via the following JavaScript properties and methods:
    • TrackingProperty string enum
    • TrackingPropertyAllowList object interface
    • updateTrackingPropertyAllowList method
    • For details, refer to the Braze iOS Privacy Manifest documentation.
  • Added the setAdTrackingEnabled method to set adTrackingEnabled flag on iOS and both the adTrackingEnabled 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.

8.1.0

Added
  • 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 default NotificationChannel.
      • <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 default NotificationChannel.
      • <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" />
  • 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" />
  • 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
  • Fixed the getDeviceId method to return the value as a success instead of an error on iOS.

8.0.0

Breaking
  • 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 to ImageOnly:
    • ContentCardTypes.BANNERContentCardTypes.IMAGE_ONLY
    • On Android, if the XML files in your project contain the word banner for Content Cards, it should be replaced with image_only.
  • BrazePlugin.getFeatureFlag(id) will now return null 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. Use setRegisteredPushToken instead.
Added
  • 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 your config.xml.
  • 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 your config.xml.
  • 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 your config.xml.

7.0.0

Breaking
Added
  • 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 the setCustomUserAttribute method. This is a non-breaking change.
    • Please see our public docs for more information.
  • Exposed the braze instance as a convenience static property on iOS via BrazePlugin.braze.
    • This makes it easier to work with tools such as Capacitor by Ionic.

6.0.1

Fixed

6.0.0

Breaking
Added
  • 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.

5.0.0

Breaking
  • 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 to subscribeToFeatureFlagsUpdates.

4.0.0

Breaking
  • Renamed instances of Appboy to Braze.
    • 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 to cordova-plugin-braze.
        • Ensure that you run cordova plugin remove cordova-plugin-appboy and then re-add the plugin using the instructions in the README.
      • 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 of com.appboy to com.braze for each of your configuration property keys.
      • The JavaScript class interface AppboyPlugin has been renamed to BrazePlugin.
  • 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. Calling logContentCardClicked now only sends a click event for metrics, instead of both sending a click event as well as redirecting to the associated url 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.
Added
  • Added property methods for Feature Flags: getFeatureFlagBooleanProperty(id, key), getFeatureFlagStringProperty(id, key), getFeatureFlagNumberProperty(id, key)

3.0.0

Added
  • Added support for the upcoming Braze Feature Flags product with getFeatureFlag(), getAllFeatureFlags(), refreshFeatureFlags(), and subscribeToFeatureFlagUpdates().
Changed
  • Updated to Braze Swift SDK 5.11.0.
  • Removed automatic requests for App Tracking Transparency permissions on iOS.

2.33.0

Breaking
  • 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.

2.32.0

Breaking
  • Updated to Braze Android SDK 24.1.0.
  • Updated the Android bridge to Kotlin.
    • <preference name="GradlePluginKotlinEnabled" value="true" /> is now required in your config.xml.
  • Removed setAvatarImageUrl().
Changed
  • Added an main value to package.json.
Added
  • Added setRegisteredPushToken() which replaces the deprecated registerAppboyPushMessages() method.

2.31.0

Breaking
Added
  • Added a method requestPushPermission() for Android API 33 to request push permission prompts from the system on Android 13 devices.

2.30.1

Added
  • 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 your config.xml, replacing your_timeout with the desired number of seconds.
Fixed
  • Fixed a bug where a Content Card without a key-value pair could cause a crash.

2.30.0

Breaking

2.29.0

Breaking
Changed

2.28.0

Breaking
Fixed
  • Fixed an error around locating certain iOS resources when integrating the SDK.

2.27.0

Breaking
Added
  • Added addToSubscriptionGroup() and removeFromSubscriptionGroup().

2.26.0

Breaking
Fixed
  • 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 your config.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.

2.25.0

Breaking
Changed
Added
  • Added Other, Unknown, Not Applicable, and Prefer not to Say options for user gender.

2.24.0

Breaking
Changed
  • (minor) Changed logcat tag for Android plugin to be BrazeCordova.

2.23.0

Breaking

2.22.0

Breaking
Added
  • Added the ability to delay automatic session tracking for Android.
    • <preference name="com.appboy.android_disable_auto_session_tracking" value="true" /> in your config.xml.

2.21.0

Breaking
Fixed
  • Fixed an issue on iOS where the plugin was incompatible with other Cordova plugins that have the use_frameworks Cocoapods setting in their Podfile.
Added
  • Added the ability to disable UNAuthorizationOptionProvisional on iOS. Within config.xml, set com.appboy.ios_disable_un_authorization_option_provisional to YES to disable UNAuthorizationOptionProvisional.

2.20.0

Added
  • Added the method getDeviceId() to the javascript plugin.

2.19.0

Breaking
Fixed
  • Fixed an issue where the plugin would automatically add the In-app Purchase capability to XCode projects.
Added
  • Added the methods addAlias() and setLanguage() to the javascript plugin.

2.18.0

Breaking

2.17.0

Breaking
  • 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.

2.16.0

Changed
Added
  • Added the ability to display notifications while app is in the foreground in iOS. Within config.xml set com.appboy.display_foreground_push_notifications to "YES" to enable this.

2.15.0

Changed

2.14.0

Changed

2.13.0

Added
  • 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.
Changed

2.12.0

Changed

2.11.2

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.

Changed

2.11.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.

Changed

2.11.0

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.

Breaking
  • 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() and launchFeedback() have been removed from the AppboyPlugin interface.
  • Updated to Braze Android SDK 3.7.0.
Added
  • Added ability to configure location collection in preferences. Braze location collection is now disabled by default.
    • Set com.appboy.enable_location_collection to true/false on Android.
    • Set com.appboy.enable_location_collection to YES/NO on iOS.
  • 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 to true/false on Android.
    • Set com.appboy.geofences_enabled to YES/NO on iOS.

2.10.1

Fixed
  • Fixed an issue in the iOS plugin where custom endpoints were not correctly getting substituted for the actual server endpoints.

2.10.0

Breaking
Added
  • Added ability for plugin to automatically collect the IDFA information on iOS. To enable, set com.appboy.ios_enable_idfa_automatic_collection to YES in your config.xml project file.
    • <platform name="ios">
          <preference name="com.appboy.ios_enable_idfa_automatic_collection" value="YES" />
      </platform>
      
Fixed
  • 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.

2.9.0

Breaking
Changed
  • 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
  • Fixed the Android plugin not respecting decimal purchase prices.

2.8.0

  • 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().

2.7.1

  • 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.

2.7.0

  • Updates Braze Android version to 3.0.0+
    • Removes GCM push registration methods. In your config.xml com.appboy.android_automatic_push_registration_enabled and com.appboy.android_gcm_sender_id , now have no effect on push registration.
  • Updates Braze iOS version to 3.9.0.

2.6.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" />.
  • Updates Braze Android version to 2.6.0+

2.5.1

  • 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. FCM config.xml keys below.
    • "com.appboy.firebase_cloud_messaging_registration_enabled" ("true"/"false")
    • "com.appboy.android_fcm_sender_id" (String)
    • The Firebase dependencies firebase-messaging and firebase-core are now included automatically as part of the plugin.

2.5.0

  • Updates Braze Android version to 2.2.5+.
  • Updates Braze iOS version to 3.3.4.
  • Adds wipeData(), enableSdk(), and disableSdk() methods to the plugin.

2.4.0

  • Fixes a subdirectory incompatibility issue with Cordova 7.1.0

2.3.2

  • 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"

2.3.1

  • 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.

2.3.0

  • 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.

2.2.0

  • 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

2.1.0

  • 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 of YES.

2.0.0

0.1

  • Initial release. Adds support for Appboy Android version 1.12+ and Appboy iOS version 2.18.1.