Skip to content

Latest commit

 

History

History
940 lines (685 loc) · 56.4 KB

CHANGELOG.md

File metadata and controls

940 lines (685 loc) · 56.4 KB

⚠️ In version 2.0.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.0.0 to a version above 2.0.0, please read the instructions to ensure a smooth transition and backward compatibility.

13.1.1

Fixed
  • Resolves an iOS issue that would deallocate existing references of braze.delegate when performing a hot reload of the app.

13.1.0

Fixed
  • Updates the iOS sample app to properly retain the BrazeReactDelegate instance. Internally, the Braze SDK uses a weak reference to the delegate, which could be deallocated if not retained by the app. This change ensures the delegate is retained for the lifecycle of the app.
Added
  • Updates the native iOS version bindings from Braze Swift SDK 11.0.0 to 11.1.1.
  • Adds the method Braze.getInitialPushPayload() to get the push notification payload when opening the app via notification click while the application was in a terminated state.
    • Braze.getInitialURL() is now deprecated in favor of Braze.getInitialPushPayload(). To access the initial URL, use the new method to receive the push notification payload, and access the value of the url key.
    • If you are using Braze.getInitialPushPayload(), add the following code to your application:didFinishLaunchingWithOptions:launchOptions::
    [[BrazeReactUtils sharedInstance] populateInitialPayloadFromLaunchOptions:launchOptions];
    
    This replaces populateInitialUrlFromLaunchOptions, which is now deprecated.

13.0.0

⚠️ Important: This version includes a Swift SDK version with a known issue related to push subscription status. Upgrade to version 13.1.0 instead.

Breaking

12.2.0

Added
  • Updates the native iOS version bindings from Braze Swift SDK 10.1.0 to 10.3.0.
  • Updates the Braze sample app to use React Native version 0.75.2.
  • Updates the Braze sample app to show how to support GIFs in in-app messages and content cards on iOS.
  • Adds the ability to conditionally import the android-sdk-location Braze library in gradle.properties via importBrazeLocationLibrary=true.

12.1.0

Added

12.0.0

Breaking
  • Updates the native iOS version bindings from Braze Swift SDK 9.0.0 to 10.0.0.
    • When subscribing to push notification events, the subscription will be triggered on iOS for both "push_received" and "push_opened", instead of only for "push_opened" events.
Added
  • Updates the Braze sample app to use React Native version 0.74.1.
  • Adds support for 3 new Feature Flag property types and various 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.

11.0.0

Breaking
Fixed
  • Fixes an issue on Android where the timestamp of a PushNotificationEvent was incorrectly translated from a long to a int. The value received by the JavaScript layer is now the same as the value sent from the Android code.

10.0.0

Breaking
Added

9.2.0

Added
Fixed
  • Fixes the Android implementation of Braze.setCustomUserAttribute() to correctly handle null values.
    • Thanks @owonie for your contribution!

9.1.0

Added
Fixed
  • Fixes the iOS implementation of Braze.registerPushToken() to correctly pass the device token to the native SDK.

9.0.0

Breaking

8.4.0

Added
  • Adds support to modify the allow list for Braze tracking properties via the following TypeScript properties and methods:
    • TrackingProperty string enum
    • TrackingPropertyAllowList object interface
    • updateTrackingPropertyAllowList method
    • For details, refer to the Braze iOS Privacy Manifest documentation.
  • Deprecates the setGoogleAdvertisingId method in favor of setAdTrackingEnabled.
    • This new method will now set adTrackingEnabled flag on iOS and both the adTrackingEnabled flag and the Google Advertising ID on Android.
  • Exposes the ContentCardTypes enum through the public TypeScript interface in index.d.ts.
  • Updates the native iOS bridge from Braze Swift SDK 7.5.0 to 7.7.0.
Fixed
  • Fixes the hasListeners property in the iOS native layer to prevent duplicate symbol errors with other libraries.
  • Addresses redefinition build errors when using the iOS Turbo Module with statically linked frameworks.

8.3.0

Added

8.2.0

Added
Fixed

8.1.0

Added
  • Push notification objects are now accessible in the JavaScript layer via new fields on the PushNotificationEvent interface.
    • Deprecates the following fields from the PushNotificationEvent interface in favor of the new names that can be used on both iOS and Android:
      • push_event_type -> Use payload_type instead.
      • deeplink -> Use url instead.
      • content_text -> Use body instead.
      • raw_android_push_data -> Use the android object instead.
      • kvp_data -> Use braze_properties instead.
  • Adds iOS support for the listener event Braze.Events.PUSH_NOTIFICATION_EVENT.
    • On iOS, only "push_opened" events are supported, indicating the user interacted with the received notification.
    • The iOS event does not support the deprecated legacy fields mentioned above.
  • Adds methods to manually perform the action of an In-App Message or Content Card when using a custom UI.
    • Braze.performInAppMessageButtonAction(inAppMessage, buttonId)
    • Braze.performInAppMessageAction(inAppMessage)
    • Braze.processContentCardClickAction(id)
  • Updates the native iOS bridge from Braze Swift SDK 7.0.0 to 7.1.0.
Fixed
  • Fixes the setLastKnownLocation method to sanitize null inputs before calling the native layer.
    • This previously caused an issue when calling this method on the legacy React Native architecture.
  • Updates the native Android bridge from Braze Android SDK 29.0.0 to 29.0.1.

8.0.0

Breaking
  • Updates the native Android bridge from Braze Android SDK 27.0.1 to 29.0.0.
  • Updates the native iOS bridge from Braze Swift SDK 6.6.0 to 7.0.0.
  • Renames the Banner Content Card type to ImageOnly:
    • BannerContentCardImageOnlyContentCard
    • 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.
  • Braze.getFeatureFlag(id) will now return null if the feature flag does not exist.
  • Braze.Events.FEATURE_FLAGS_UPDATED 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.
Added
  • Adds Braze.getUserId() to get the ID of the current user.

7.0.0

Breaking
Fixed
  • Fixes the Android layer to record date custom user attributes as ISO strings instead of integers.
  • Fixes a bug introduced in 6.0.0 where Braze.getInitialUrl() may not trigger the callback on Android.
Added
  • Updates the native iOS bridge from Braze Swift SDK 6.4.0 to 6.6.0.
  • Adds support for nested custom user attributes.
    • The setCustomUserAttribute now accepts objects and arrays of objects.
    • Adds an optional merge parameter to the setCustomUserAttribute method. This is a non-breaking change.
    • Reference our public docs for more information.
  • Adds Braze.setLastKnownLocation() to set the last known location for the user.
  • Adds Braze.registerPushToken() in the JavaScript layer to post a push token to Braze's servers.
    • Deprecates Braze.registerAndroidPushToken() in favor of Braze.registerPushToken().
  • Adds Braze.getCachedContentCards() to get the most recent content cards from the cache, without a refresh.
  • Adds support for the Feature Flag method logFeatureFlagImpression(id).

6.0.2

Fixed

6.0.1

Fixed
  • Adds 'DEFINES_MODULE' => 'YES' to the iOS Podspec when compiling the Turbo Module to prevent the need for static framework linkage when using the Braze Expo plugin.

6.0.0

Breaking
  • If you are using the New Architecture, this version requires React Native 0.70 or higher.
  • Fixes the sample setup steps for iOS apps conforming to RCTAppDelegate.
    • ⚠️ If your app conforms to RCTAppDelegate and was following our previous AppDelegate setup in the sample project or Braze documentation, you will need to reference our updated samples to prevent any crashes from occurring when subscribing to events in the new Turbo Module. ⚠️
  • If your project contains unit tests that depend on the Braze React Native module, you will need to update your imports to the NativeBrazeReactModule file to properly mock the Turbo Module functions in Jest.
    • For an example, refer to the sample test setup here.
  • Updates the native Android bridge from Braze Android SDK 25.0.0 to 26.3.1.
  • Fixes the presentation of in-app messages to match the documented behavior.
    • Calling subscribeToInAppMessages or addListener in the Javascript layer will no longer cause a custom BrazeInAppMessageUIDelegate implementation on iOS to be ignored.
    • Calling Braze.addListener for the inAppMessageReceived event will subscribe in both the Javascript and the native layers (iOS + Android). This means it is no longer required to call Braze.subscribeToInAppMessage.
      • Per the Braze documentation, you do not need to explicitly call subscribeToInAppMessage to use the default In-App Message UI.
    • See our documentation for more details around Advanced customization.
Added
  • Migrates the Braze bridge to a backwards-compatible New Architecture Turbo Module.
    • This is a non-breaking change to your existing imports of the Braze SDK if you are using React Native 0.70+.
    • The Braze SDK continues to be compatible with both the New Architecture and old React Native architecture.
  • Adds the getDeviceId method to replace getInstallTrackingId, which is now deprecated.
  • Updates the native iOS bridge from Braze Swift SDK 6.3.1 to 6.4.0.
  • Adds a conditional library namespace to the Android build.gradle file to prepare for React Native 0.73, which uses AGP 8.x.

5.2.0

Fixed
  • Fixes an issue on Android where push notifications wouldn't be forwarded after the app was closed.
  • Fixes an issue on iOS preventing in-app message subscription events from being sent if subscribeToInAppMessage is called prior to any Braze.addListener calls.
  • Changed the Java compatibility version for the Android plugin to Java 11.
Added

5.1.0

Fixed
  • Fixes an issue that occured whenever a custom event is logged with dictionary properties using a key named "type".
  • Removes the automatic assignment of BrazeDelegate in the iOS bridge, allowing for custom implementations to be assigned to the braze instance.

5.0.0

Breaking
  • Updates the native iOS bridge from Braze Swift SDK 5.13.0 to 6.2.0.
  • Removes setSDKFlavor and setMetadata, which were no-ops starting from version 2.0.0.
    • On iOS, these fields must be set using the Braze.Configuration object at SDK initialization.
    • On Android, these fields must be set via the braze.xml file.
Fixed
  • Fixes an issue on Android with getNewsFeedCards() and getContentCards() where promises could be invoked more than once.
Added

4.1.0

Fixed
  • Fixes an issue in the PushNotificationEvent object introduced in 2.0.1 where a field was named context_text instead of the correct value of content_text.
Added
  • Adds support for the upcoming Braze Feature Flags product with the following methods:
    • getFeatureFlag(id)
    • getAllFeatureFlags()
    • refreshFeatureFlags()
    • getFeatureFlagBooleanProperty(id, key)
    • getFeatureFlagStringProperty(id, key)
    • getFeatureFlagNumberProperty(id, key)
  • Adds the Braze Event key Braze.Events.FEATURE_FLAGS_UPDATED for subscribing to Feature Flags updates.

4.0.0

Breaking
  • The iOS bridge now automatically attaches the default In-App Message UI with the braze instance, without needing to call subscribeToInAppMessage(). This updates the behavior from 2.0.0 to simplify integration.
    • This change doesn't affect integrations using custom UIs for in-app messages.
  • Changes the returned value when subscribing to Braze.Events.CONTENT_CARDS_UPDATED to be a Braze.ContentCardsUpdatedEvent object instead of a boolean.
    • Braze.ContentCardsUpdatedEvent contains a cards property which is an array of the Content Cards in the update.
    • Thanks @Minishlink for your contribution!
Fixed
  • Fixes an issue in the iOS bridge where getContentCards() and getNewsFeedCards() returned data in a different format than the Android bridge.
  • Fixes the behavior when using the recommended iOS integration where the React Bridge delegate had conflicts with other dependencies. The updated sample app code can be found here.
Added
  • Updates the native iOS bridge to Braze Swift SDK 5.13.0.
  • Improves typescript definitions for addListener event types.

3.0.0

Starting with this release, this SDK will use Semantic Versioning.

⚠ Breaking
  • Fixes the behavior in the iOS bridge introduced in version 2.0.0 when logging clicks for in-app messages, content cards, and news feed cards. Calling logClick 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:
    Braze.logContentCardClicked(contentCard.id);
    
    // Your own custom implementation
    Linking.openUrl(contentCard.url);
    
    • This brings the iOS behavior to match version 1.x and bring parity with Android's behavior.
Fixed
  • Fixes an issue in the iOS bridge introduced in 2.0.0 where getContentCards() and getNewsFeedCards() would return an array of cards with the url and image fields as null.
Changed
  • Updates the native iOS bridge to Braze Swift SDK 5.11.2.
  • Updates the native Android bridge to Braze Android SDK 24.3.0.
  • Updates getContentCards on the iOS bridge to initiate a refresh before returning the array of Content Cards. This brings parity with the Android bridge behavior.

2.1.0

Added
  • Added 'DEFINES_MODULE' => 'YES' to the Cocoapod's xcconfig to remove the need for static framework linkage on iOS when using the Braze Expo plugin.

2.0.2

Fixed
  • Removes the usage of Objective-C modules when importing the Braze Swift SDK for improved compatibility with Objective-C++.
    • When importing BrazeKit or BrazeLocation, you must use the #import <Module/Module-Swift.h> syntax:
      • @import BrazeKit;#import <BrazeKit/BrazeKit-Swift.h>
      • @import BrazeLocation;#import <BrazeLocation/BrazeLocation-Swift.h>

2.0.1

Fixed
  • Fixes compatibility issues with newer versions of React Native introduced in 2.0.0.
  • Fixes an issue where callbacks were not being executed for some user attribute methods.

2.0.0

⚠ Breaking
  • The Braze React Native SDK npm package has moved from react-native-appboy-sdk to @braze/react-native-sdk.
  • Renames AppboyReactBridge and AppboyReactUtils to BrazeReactBridge and BrazeReactUtils, respectively.
  • This version requires React Native 0.68 or higher.
  • Updates the native iOS bridge to use the new Swift SDK version 5.9.1.
  • During migration, update your project with the following changes in your iOS integration:
    • To initialize Braze, follow these integration steps to create a configuration object. Then, add this code to complete the setup:
      let braze = BrazePlugin.initBraze(configuration)
      
    • 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.
    • To continue using SDWebImage as a dependency, add this line to your project's /ios/Podfile:
      pod 'SDWebImage', :modular_headers => true
      
    • To use the default In-App Message UI, make sure to call subscribeToInAppMessage() or else follow these instructions to add it to your app.
    • For sample code to help with the migration, reference our sample app and AppDelegate.mm file.
    • If you are integrating this SDK with an application that uses only Objective-C, create an empty Swift file to ensure that all the relevant Swift runtime libraries are linked. Reference this file from our sample app.
  • The following methods for News Feed are now no-ops on iOS:
    • Braze.launchNewsFeed()
    • Braze.getCardCountForCategories()
    • Braze.getUnreadCardCountForCategories()
  • Updates the native Android bridge to Braze Android SDK 24.2.0.
Added
  • Adds the following APIs to more easily interface with the News Feed product. Thanks @swissmanu for your contribution!
    • Braze.getNewsFeedCards()
    • Braze.logNewsFeedCardClicked()
    • Braze.logNewsFeedCardImpression()

1.41.0

⚠ Breaking
  • Removed setFacebookData().
  • Removed setTwitterData().
Changed
  • Updated the native Android bridge to Braze Android SDK 23.3.0.
  • Exposes isControl field for ContentCard.
  • Removed kotlinVersion gradle template variable. To override the Kotlin version used, please use a Gradle dependency resolutionStrategy.

1.40.0

⚠ Breaking
Changed
  • Updated the React podspec dependency to React-Core.

1.39.0

⚠ Breaking
  • Renamed the kotlin_version gradle template variable to kotlinVersion.
  • Updated the native Android bridge to Braze Android SDK 23.2.0.
Fixed
  • Fixed an issue that caused a NativeEventEmitter warning message to appear.

1.38.1

Fixed
  • Fixed an issue introduced in 1.38.0 where setEmail did not work as expected on Android.

1.38.0

⚠ Breaking
  • Updated the native Android bridge to Braze Android SDK 23.0.1.
  • Updated the native iOS bridge to Braze iOS SDK 4.5.0.
  • The Braze React Native Android SDK now requires Kotlin directly for compilation. An example is included below:
      buildscript {
          ext.kotlin_version = '1.6.0'
    
          dependencies {
              classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
          }
      }
Added
  • Introduced Braze.Events.PUSH_NOTIFICATION_EVENT which can be used to listen for Braze Push Notification events on Android. See example below:
    Braze.addListener(Braze.Events.PUSH_NOTIFICATION_EVENT, function(data) {
      console.log(`Push Notification event of type ${data.push_event_type} seen.
        Title ${data.title}\n and deeplink ${data.deeplink}`);
      console.log(JSON.stringify(data, undefined, 2));
    });
  • Added Braze.requestPushPermission() to request a permissions prompt for push notifications.

1.37.0

⚠ Breaking
  • The Braze React Native SDK now exports its default object as an ES Module. If you currently import the SDK using require(), you will need to now import it as a standard ES Module (e.g. import Braze from "react-native-appboy-sdk").
Added
  • Introduced Braze.subscribeToInAppMessage() which publishes an event to the Javascript layer when an in-app message is triggered and allows you to choose whether or not to use the default Braze UI to display in-app messages.

1.36.0

⚠ Breaking
  • Updated the native Android bridge to Braze Android SDK 21.0.0.
  • Updated the native iOS bridge to Braze iOS SDK 4.4.4.
  • Removed setAvatarImageUrl().
  • Removed logContentCardsDisplayed. This method was not part of the recommended Content Cards integration and can be safely removed.

1.35.1

Fixed
  • Fixed an issue where setMetadata did not have a method implementation for Android.

1.35.0

⚠ Breaking

1.34.1

Fixed
  • Fixed an issue where getInitialUrl would not resolve when there is no initial URL.

1.34.0

⚠ Breaking
Fixed
  • Fixed an issue with Content Card types. Thanks @jtparret!
Changed
  • Improved logging around getInitialUrl.

1.33.1

Fixed
  • Fixed an issue introduced in 1.33.0 that caused a build error on iOS.

1.33.0

⚠ Breaking
Added
  • Added ReactAppboy.addToSubscriptionGroup() and ReactAppboy.removeFromSubscriptionGroup() to manage SMS/Email Subscription Groups.
  • Custom events and purchases now support nested properties. In addition to integers, floats, booleans, dates, or strings, a JSON object can be provided containing dictionaries of arrays or nested dictionaries. All properties combined can be up to 50 KB in total length.

1.32.0

⚠ Breaking

1.31.0

⚠ Breaking
Added
  • Added support for new SDK Authentication feature to the Javascript layer. See setSdkAuthenticationSignature on the Appboy interface, as well as the optional signature parameter on ReactAppboy.changeUser.

1.30.0

⚠ Breaking

1.29.1

⚠️ Known Issues
  • This release contains a known issue with the Content Cards default UI on iOS, where showing a "Classic" type card with an image causes a crash. If you are using the default Content Cards UI, do not upgrade to this version.
Fixed
  • Fixed issue introduced in 1.29.0 where calling ReactAppboy.changeUser would cause an error on Android.

1.29.0

⚠️ Known Issues
  • This release contains a known issue with the Content Cards default UI on iOS, where showing a "Classic" type card with an image causes a crash. If you are using the default Content Cards UI, do not upgrade to this version.
⚠ Breaking

1.28.0

⚠ Breaking
Added
  • Added support for ReactAppboy.setGoogleAdvertisingId() to set the Google Advertising ID and associated ad-tracking enabled field for Android devices. This is a no-op on iOS.
Fixed
  • Fixed an issue where calling getInstallTrackingId() while the SDK was disabled would cause a crash on iOS.

1.27.0

⚠ Breaking
Added
  • Added support for receiving iOS push action button deep links in ReactAppboy.getInitialURL(). If you are using ReactAppboy.getInitialURL() and implement iOS push action button categories, add the following code to the beginning of your userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler::
    [[AppboyReactUtils sharedInstance] populateInitialUrlForCategories:response.notification.request.content.userInfo];
    

1.26.0

⚠ Breaking

1.25.0

⚠ Breaking

1.24.0

⚠ Breaking

1.23.0

⚠ Breaking
  • Updated the native iOS bridge to 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.

1.22.0

Changed

1.21.0

⚠ Breaking
Added
  • Added support for working with in-app messages in the JavaScript layer. In-App Messages can be instantiated using the BrazeInAppMessage class. The resulting object can be passed into the analytics methods: logInAppMessageClicked, logInAppMessageImpression, and logInAppMessageButtonClicked (along with the button index). See the README for additional implementation details or the AppboyProject sample app for an integration example.
Changed
  • Improved Typescript definitions for setCustomUserAttribute and incrementCustomUserAttribute.
    • Thanks @janczizikow!
Fixed
  • Fixed incorrect TypeScript definition for ContentCard.
    • Thanks @Hannes-Sandahl-Mpya!

1.20.0

⚠ Breaking
Added
  • Added ReactAppboy.requestGeofences() to request a Braze Geofences update for a manually provided GPS coordinate. Automatic Braze Geofence requests must be disabled to properly use this method.

1.19.0

Breaking

1.18.0

Breaking
Fixed
  • Fixed an issue where ReactContext.getJSModule() could be called before the native module was initialized.
    • Thanks @tszajna0!
Changed

1.17.4

Fixed
  • Removed a support library reference in AppboyReactBridge.java that caused Androidx compatibility issues.

1.17.3

Fixed
  • Added SDWebImage and Headers pod directories to the AppboyReactBridge project's Header Search Paths. Thanks @tomauty and @mlazari for your contributions! See #70 and #69.
Changed

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

1.17.1

Important: This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 1.17.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 1.17.2 or above if you make use of HTML in-app messages.

Changed

1.17.0

Important: This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 1.17.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 1.17.2 or above if you make use of HTML in-app messages.

Breaking
  • Updated the native iOS bridge to 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];
  • ReactAppboy.registerPushToken() was renamed to ReactAppboy.registerAndroidPushToken() and is now a no-op on iOS. On iOS, push tokens must now be registered through native methods.

1.16.0

Important This release has known issues displaying HTML in-app messages. Do not upgrade to this version and upgrade to 1.17.2 and above instead. If you are using this version, you are strongly encouraged to upgrade to 1.17.2 or above if you make use of HTML in-app messages.

Breaking
  • Updated the native iOS bridge to Braze iOS SDK 3.19.0.
  • Updated the native Android bridge to Braze Android SDK 3.7.0.
  • Note: This Braze React SDK release updates to Braze Android SDK and Braze iOS SDK dependencies which no longer enable automatic Braze location collection by default. Please consult their respective changelogs for information on how to continue to enable automatic Braze location collection, as well as further information on breaking changes.
  • Removes the Feedback feature.
    • submitFeedback() and launchFeedback() have been removed from the Appboy interface.
Added
  • Added the ability to more easily create custom UIs for Content Cards from within the React Native layer by providing access to card data and analytics methods in Javascript.
    • Added ReactAppboy.getContentCards for getting locally cached content cards data.
      • To request a Content Cards update, use ReactAppboy.requestContentCardsRefresh().
    • Added ReactAppboy.logContentCardsDisplayed for manually logging an impression for the content card feed.
    • Added ReactAppboy.logContentCardClicked for manually logging a click to Braze for a particular card.
    • Added ReactAppboy.logContentCardImpression for manually logging an impression to Braze for a particular card.
    • Added ReactAppboy.logContentCardDismissed for manually logging a dismissal to Braze for a particular card.
    • Added ReactAppboy.addListener for subscribing to ReactAppboy.Events.CONTENT_CARDS_UPDATED events.
      • After a successful update, use getContentCards to retrieve updated cards.
      • ReactAppboy.addListener(ReactAppboy.Events.CONTENT_CARDS_UPDATED, async function() {
          let cards = await ReactAppboy.getContentCards();
          console.log('Content Cards Updated.', cards);
        })
        
    • See #58. Thanks @alexmbp!

1.15.0

Breaking
  • Updated the native iOS bridge to Braze iOS SDK 3.17.0.
  • Removed the NewsFeedLaunchOptions enum. Using these arguments with launchNewsFeed() had been a no-op since version 1.7.0.

1.14.0

Breaking
Fixed
  • Fixed an issue where logging custom events or purchases without event properties would cause crashes on Android, for example logCustomEvent("event").
Added
  • Added additional TypeScript definitions.

1.13.0

Breaking
  • Updated the native iOS bridge to Braze iOS SDK 3.15.0.
    • This release of the iOS SDK added support for SDWebImage version 5.0.
    • Note that upgrading to SDWebImage 5.0 also removed the FLAnimatedImage transitive dependency.

1.12.0

Breaking
Added
  • Added ReactAppboy.launchContentCards() for launching the content cards UI.

1.11.1

Added
  • Added Typescript definitions for the Appboy interface.
    • Thanks @ahanriat and @josin for your contributions! See #57 and #38.
    • Note that certain less-used parts of the API were excluded. Please file an issue if you would like specific method(s) added.

1.11.0

Breaking
  • Updated the native Android bridge to Braze Android SDK 3.2.0.
    • Added AppboyFirebaseMessagingService to directly use the Firebase messaging event com.google.firebase.MESSAGING_EVENT. This is now the recommended way to integrate Firebase push with Braze. The AppboyFcmReceiver should be removed from your AndroidManifest and replaced with the following:
      <service android:name="com.appboy.AppboyFirebaseMessagingService">
        <intent-filter>
          <action android:name="com.google.firebase.MESSAGING_EVENT" />
        </intent-filter>
      </service>
      
      • Also note that any c2dm related permissions should be removed from your manifest as Braze does not require any extra permissions for AppboyFirebaseMessagingService to work correctly.
  • Updated the native iOS bridge to Braze iOS SDK 3.14.0.
    • Dropped support for iOS 8.
Added
  • Added support for sending JavaScript Date() type custom event and purchase properties through the Appboy interface.

1.10.0

Breaking
Added
  • Added addAlias(aliasName, aliasLabel) to the Appboy interface to allow aliasing users.
    • Thanks @alexmbp!
Changed
  • Updated build.gradle to use project.ext config if available.

1.9.0

Breaking
  • Updated the native iOS bridge to Braze iOS SDK 3.11.0.
  • Updated the native Android bridge to Braze Android SDK 3.0.1.
  • Updated the Android wrapper to use api and implementation syntax in it's build.gradle instead of compile. As part of this work, the Android Gradle plugin version was updated to 3.2.1.
Added
  • Added setUserAttributionData() to the Appboy interface to allow setting the attribution data for the current user.
  • Added getInstallTrackingId() to the Appboy interface to allow getting the install tracking id. This method is equivalent to calling Appboy.getInstallTrackingId() on Android and returns the IDFV on iOS.
  • Added setLanguage() to the Appboy interface to allow setting a language for the current user.
  • Added hideCurrentInAppMessage() to the Appboy interface to allow hiding of the currently displayed in-app message.
Fixed
  • Fixed an issue where the Android wrapper would include an older version of React Native in test APK builds.
Changed
  • Updated our sample projects to use React Native 0.56.

1.8.1

Changed

1.8.0

Breaking
  • Updated the native Android bridge to Braze Android SDK 2.7.0.
    • Important: Note that in Braze Android SDK 2.7.0, AppboyGcmReceiver was renamed to AppboyFcmReceiver. This receiver is intended to be used for Firebase integrations. Please update the AppboyGcmReceiver declaration in your AndroidManifest.xml to reference AppboyFcmReceiver and remove the com.google.android.c2dm.intent.REGISTRATION intent filter action.
  • Updated the native iOS bridge to Braze iOS SDK 3.8.3.
Added
  • Added setLocationCustomAttribute() to the Appboy interface to allow setting of custom location attributes.

1.7.3

Added
  • Added requestLocationInitialization() to the Appboy interface. Calling this method is the equivalent of calling AppboyLocationService.requestInitialization() on the native Braze Android SDK. The method is a no-op on iOS.

1.7.2

Fixed
  • Fixed an issue introduced in 1.7.0 where calling launchNewsFeed() would cause crashes in the Android bridge.

1.7.1

Fixed
  • Updated the podspec to point to Braze iOS SDK version 3.5.1.

1.7.0

Breaking
Added
  • Added Other, Unknown, Not Applicable, and Prefer not to Say options for user gender.
  • Updated the AppboyProject sample app to use FCM instead of GCM.
  • Added toasts to provide feedback for user actions in the AppboyProject sample app.
  • Implemented requiresMainQueueSetup in AppboyReactBridge.m to prevent warnings in React Native 0.49+.
    • See #39. Thanks @danieldecsi!
Changed
  • Passing launch options into launchNewsFeed() is now a no-op.

1.6.0

Breaking
Added
  • Added support for wiping all customer data created by the Braze SDK via Appboy.wipeData().
    • Note that on iOS, wipeData() will disable the SDK for the remainder of the app run. For more information, see our iOS SDK's documentation for disableSDK.
  • Added Appboy.disableSDK() to disable the Braze SDK immediately.
  • Added Appboy.enableSDK() to re-enable the SDK after a call to Appboy.disableSDK().
    • Note that on iOS, enableSDK() will not enable the SDK immediately. For more information, see our iOS SDK's documentation for requestEnableSDKOnNextAppRun.
Changed
  • Removed allowBackup from the plugin AndroidManifest.xml.
    • See #34. Thanks @SMJ93!

1.5.2

Fixed
  • Fixed a race condition between SDK flavor reporting and sharedInstance initialization on iOS.

1.5.1

Fixed
  • Fixed a bug that caused opted-in subscription states to not be reflected on the user profile.

1.5.0

Breaking
  • Updated the native iOS bridge to Braze iOS SDK 3.0.0 or later.
  • Updated the native Android bridge to Braze Android SDK 2.2.4.
  • Changed success callbacks on submitFeedback() on Android to always return true as submitFeedback() was changed to return void in the native SDK.

1.4.1

Added

1.4.0

Breaking
Added
  • Added ReactAppboy.registerPushToken() for registering push tokens with Braze.
    • See #13. Thanks @dcvz!
  • Added the local react-native-appboy-sdk Podspec for integrating the React Native iOS bridge via Cocoapods.
    • See #15. Thanks @pietropizzi!

1.3.0

Breaking
Added
  • Adds ReactAppboy.requestImmediateDataFlush() for requesting an immediate flush of any data waiting to be sent to Braze's servers.
  • Adds ReactAppboy.requestFeedRefresh() for requesting a refresh of the News Feed.
    • See #12. Thanks @stief510!
  • Added the ability to pass an optional dictionary of News Feed launch options to launchNewsFeed(). See NewsFeedLaunchOptions for supported keys.
    • For more information on currently supported NewsFeedLaunchOptions keys, see the card width and card margin properties on ABKFeedViewController.
    • See #10. Thanks @mihalychk!

1.2.0

Breaking
  • Updates the native iOS bridge to be compatible with React Native v0.40.0.
Changed
  • Updates the AppboyProject sample project to React Native v0.41.1.

1.1.0

Breaking
  • Update Required — Fixes a bug in the iOS bridge where custom attribute dates were converted incorrectly, causing incorrect date data to be sent to Braze. As a result of the fix, setDateCustomUserAttribute() in the iOS React bridge may now only be called with a double.
    • Note: The default Javascript Braze interface has not changed, so for most integrations this just requires updating the SDK, unless you were manually calling our iOS bridge outside of our recommended integration.
    • See #7

1.0.0

Breaking
  • Update Required — Updates iOS push handling in the AppboyProject sample project to be compatible with iOS 10. For more information, refer to the CHANGELOG for Braze iOS SDK v2.24.0.
Added
  • Adds callbacks to the native bindings to provide function call results to React Native.
  • Exposes ReactAppboy.getCardCountForCategories() and ReactAppboy.getUnreadCardCountForCategories() for retrieving News Feed card counts.
  • Adds ReactAppboy.getInitialURL() for handling deep links when an iOS application is launched from the suspended state by clicking on a push notification with a deep link. See componentDidMount() in AppboyProject.js for a sample implementation.
  • Exposes ReactAppboy.setTwitterData() and ReactAppboy.setFacebookData() for Twitter and Facebook integration.
Changed
Removed
  • Removes AppboyBroadcastReceiver.java from the AppboyProject sample project, as Braze Android SDK v1.15.0 removes the need for a custom AppboyBroadcastReceiver for Braze push notifications.

0.3.0

Changed
  • Renames Android module to conform to rnpm standard.

0.2.0

Changed
  • Refactors Android module to have the source directly under the android folder.

0.1.0

  • Initial release. Targets Braze Android SDK version 1.12.0 and Braze iOS SDK Version 1.18.4.