Giter VIP home page Giter VIP logo

braze-flutter-sdk's Introduction

Braze Flutter SDK

Effective marketing automation is an essential part of successfully scaling and managing your business. Braze empowers you to build better customer relationships through a seamless, multi-channel approach that addresses all aspects of the user life cycle on an ongoing basis.

This project contains the Braze plugin, a specialized package that allows integrators to use certain Braze APIs from Flutter app code written in Dart.

Getting Started

For information about using this package, please reference the Braze documentation here.

Support

Please reach out to [email protected] regarding any questions or issues.

Sample App

The /example folder contains a sample app illustrating how to integrate and use this package's APIs.

Requirements

  • Dart SDK 2.15.0+
  • Flutter SDK 1.10.0+

braze-flutter-sdk's People

Contributors

hokstuff avatar jerielng avatar vanessaland avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

braze-flutter-sdk's Issues

Upgrade to iOS swift-sdk 5.9.0

Currently this plugin is using braze-swift-sdk-5.6.4, which is from November 2022. After that, relevant fixes has been made, particularly the following in 5.9.0, that is affecting us directly:
Fixes a behavior where the current user messaging data would not be directly available after initializing the SDK or calling changeUser(userId:).

Do we have an ETA on when the next version will be released?

Thanks.

Suport Android 8 InApp campaign

I am using the latest version of this plugin, but the InApp and Modal campaign does not work on Android 8. The screen freezes, like a transparent InApp or Modal. Nothing is shown. Can you help me?

InAppMessages are "swallowed" given the suggested setup

When looking at this method:
https://github.com/braze-inc/braze-flutter-sdk/blob/master/android/src/main/kotlin/com/braze/brazeplugin/BrazePlugin.kt#L85

It seems that InAppMessages are completely discarded when the app is started in the background without an UI, which is a situation we are facing.

The README suggests the following:

Your beforeInAppMessageDisplayed method implementation should return InAppMessageOperation.DISCARD. For an example, see MainActivity.kt in our example app.

So you get something like this:

    override fun beforeInAppMessageDisplayed(inAppMessage: IInAppMessage): InAppMessageOperation {
        Handler(Looper.getMainLooper()).post {
            BrazePlugin.processInAppMessage(inAppMessage)
        }

        return InAppMessageOperation.DISCARD
    }

I'm wondering if a setup like the following would be better:

    override fun beforeInAppMessageDisplayed(inAppMessage: IInAppMessage): InAppMessageOperation {
        if (!BrazePlugin.canProcessInAppMessages()) {
            return InAppMessageOperation.DISPLAY_LATER
        }

        Handler(Looper.getMainLooper()).post {
            BrazePlugin.processInAppMessage(inAppMessage)
        }

        return InAppMessageOperation.DISCARD
    }

This would mean that the braze plugin can provide this canProcessInAppMessages method.

Is this a solution that would work for the issue I described?

Out of memory exception when handling dart message in Android

We noticed the following crash in crashlytics:

Fatal Exception: java.lang.OutOfMemoryError
Failed to allocate a 16 byte allocation with 82152 free bytes and 80KB until OOM, target footprint 201326592, growth limit 201326592; failed due to fragmentation (largest possible contiguous allocation 163315712 bytes)

com.braze.brazeplugin.BrazePlugin.convertToAppboyProperties (BrazePlugin.java)
com.braze.brazeplugin.BrazePlugin.onMethodCall (BrazePlugin.java:1697)
io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage (MethodChannel.java:17)
io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart (DartMessenger.java:49)
io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage (FlutterJNI.java:4)
flutter_error_exception
TimeoutException after 0:00:10.000000: Future not completed

Specifications:

Device
Brand:samsung
Model:Galaxy Tab S6 Lite
Orientation: Portrait
RAM free: 1.2 GB
Disk free: 39.32 GB

Operating System
Version:Android 11
Orientation: Portrait
Rooted:No

No such module 'BrazePushStory' and No such module 'BrazeNotificationService'

While adding rich notifications and push stories there are no BrazeNotificationService and BrazePushStory frameworks.

On running the app in the android studio it does not throw any errors and runs perfectly, but when I run the app from Xcode or try to make an archive it throws No such module 'BrazePushStory' and No such module 'BrazeNotificationService' errors.

I am using braze_plugin: ^3.0.1.

Screenshot 2022-12-29 at 10 11 22 AM

Screenshot 2022-12-29 at 12 56 43 PM

[bug][regression] the new streaming api's broke an existing fix

Some time ago, the "queued messages" was introduced:

  /// Sets a callback to receive in-app message data from Braze.
  @Deprecated(
      'Use subscribeToInAppMessages(void onEvent(List<BrazeContentCard> contentCard)) instead.')
  void setBrazeInAppMessageCallback(Function(BrazeInAppMessage) callback) {
    _brazeInAppMessageHandler = callback;

    if (_replayCallbacksConfigEnabled() && _queuedInAppMessages.isNotEmpty) {
      print("Replaying callback on previously queued Braze in-app messages.");
      _queuedInAppMessages.forEach((message) => callback(message));
      _queuedInAppMessages.clear();
    }
  }

Where queued messages got replayed.

Now you've introduced the Stream api, which looks like this:

  /// Subscribes to the stream of in-app messages and calls [onEvent] when it
  /// receives an in-app message.
  StreamSubscription subscribeToInAppMessages(
      void onEvent(BrazeInAppMessage inAppMessage)) {
    StreamSubscription subscription =
        inAppMessageStreamController.stream.listen((inAppMessage) {
      onEvent(inAppMessage);
    });
    return subscription;
  }

To prove my point, the following:

      final controller = StreamController<int>.broadcast();
      controller.add(1);
      controller.stream.listen(print);
      controller.add(2);

      controller.close();

prints 2;

Thus, queued messages are not replayed.

[CRASH]: Braze crashes on Android, high number of crashes

The new SDK version crashes.
SDK version: v2.4.0

java.lang.AssertionError: impossible
       FATAL EXCEPTION: Appboy-User-Dependency-Thread #1
java.lang.AssertionError: impossible
	at java.lang.Enum$1.create(Enum.java:272)
	at java.lang.Enum$1.create(Enum.java:262)
	at libcore.util.BasicLruCache.get(BasicLruCache.java:58)
	at java.lang.Enum.getSharedConstants(Enum.java:289)
	at java.lang.Class.getEnumConstantsShared(Class.java:2423)
	at java.util.EnumSet.getUniverse(EnumSet.java:407)
	at java.util.EnumSet.noneOf(EnumSet.java:109)
	at java.util.EnumSet.of(EnumSet.java:235)
	at bo.app.o.<init>(Unknown Source:57)
	at bo.app.q6.<init>(Unknown Source:309)
	at com.appboy.Appboy.lambda$new$0(Unknown Source:263)
	at com.appboy.Appboy.C(Unknown Source:0)
	at O.c.run(Unknown Source:14)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
	at java.lang.Thread.run(Thread.java:764)
Caused by: java.lang.NoSuchMethodException: values []
	at java.lang.Class.getMethod(Class.java:2068)
	at java.lang.Class.getDeclaredMethod(Class.java:2047)
	at java.lang.Enum$1.create(Enum.java:268)
Type
java.lang.AssertionError
java.lang.AssertionError: 
  at java.lang.Enum$1.create (Enum.java:272)
  at java.lang.Enum$1.create (Enum.java:262)
  at libcore.util.BasicLruCache.get (BasicLruCache.java:58)
  at java.lang.Enum.getSharedConstants (Enum.java:289)
  at java.lang.Class.getEnumConstantsShared (Class.java:2423)
  at java.util.EnumSet.getUniverse (EnumSet.java:407)
  at java.util.EnumSet.noneOf (EnumSet.java:109)
  at java.util.EnumSet.of (EnumSet.java:235)
  at bo.app.o.<init> (Unknown Source:57)
  at bo.app.q6.<init> (Unknown Source:309)
  at com.appboy.Appboy.lambda$new$0 (Appboy.java:263)
  at com.appboy.Appboy.$r8$lambda$tmujTATmOa-S3_32xNwyFuMla7k (Appboy.java)
  at O.FragmentStrictMode$$ExternalSyntheticLambda1.run (R8$$SyntheticClass:14)
  at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1187)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at java.lang.Thread.run (Thread.java:784)
Caused by: java.lang.NoSuchMethodException: 
  at java.lang.Class.getMethod (Class.java:2068)
  at java.lang.Class.getDeclaredMethod (Class.java:2047)
  at java.lang.Enum$1.create (Enum.java:268)
  at java.lang.Enum$1.create (Enum.java:262)
  at libcore.util.BasicLruCache.get (BasicLruCache.java:58)
  at java.lang.Enum.getSharedConstants (Enum.java:289)
  at java.lang.Class.getEnumConstantsShared (Class.java:2423)
  at java.util.EnumSet.getUniverse (EnumSet.java:407)
  at java.util.EnumSet.noneOf (EnumSet.java:109)
  at java.util.EnumSet.of (EnumSet.java:235)
  at bo.app.o.<init> (Unknown Source:57)
  at bo.app.q6.<init> (Unknown Source:309)
  at com.appboy.Appboy.lambda$new$0 (Appboy.java:263)
  at com.appboy.Appboy.$r8$lambda$tmujTATmOa-S3_32xNwyFuMla7k (Appboy.java)
  at O.FragmentStrictMode$$ExternalSyntheticLambda1.run (R8$$SyntheticClass:14)
  at java.util.concurrent.ThreadPoolExecutor.processTask (ThreadPoolExecutor.java:1187)
  at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1152)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:641)
  at java.lang.Thread.run (Thread.java:784)

We're a Braze customer (NOCD).

Missing Error Data for Content Card Streams

Presently, when we send a request to refreshContentCards, the stream does not return any errors in case the request encounters a failure.

In contrast, on iOS, the refreshContentCards method does provide the capability to capture failures when refreshing content card data from the stream. Unfortunately, in the Braze Flutter SDK, there is currently no built-in mechanism for handling these errors. The only available option is to delve into platform-specific code and modify the existing Method Channel.

Implementing this change would be valuable as it would enable users to observe an error state in the event of a failure in the Braze call, enhancing the overall user experience.

Braze plugin already receives in-app messages before we can handle them

This is our (simplified) setup in the app's main:

  print("creating braze plugin...");
  final braze = BrazePlugin()
  print("braze plugin created");

I've updated the _handleBrazeData in the BrazePlugin to print the incoming message. This is what we are seeing in the logs:

I/flutter ( 6072): creating braze plugin...
I/flutter ( 6072): In app message received: {"message":"Hello from the other side","click_action":"NONE","btns":[{"id":0,"text":"No","click_action":"NONE","bg_color":4294967295,"text_color":4279990479,"border_color":4279990479},{"id":1,"text":"Yes","click_action":"NONE","bg_color":4279990479,"text_color":4294967295,"border_color":4279990479}],"type":"MODAL","text_align_message":"CENTER","message_close":"SWIPE","header":"Hello","text_align_header":"CENTER","close_btn_color":4291085508,"bg_color":4294243575,"frame_color":3207803699,"text_color":4280624421,"header_text_color":4280624421,"trigger_id":"NjEzMWZlNWFjN2ViYjQ2MzE1YTgxOWY4XyRfbXY9NjEzMWZlNWFjN2ViYjQ2MzE1YTgxYTAyJnBpPWNtcA=="}
I/flutter ( 6072): Braze in-app message callback not present. Doing nothing.
I/flutter ( 6072): braze plugin created

How come the message is coming in before we can handle it? I think the fact dart being single-threaded is an issue here. This issue is happening on Android with a "normal" setup using a braze.xml config.

If this is an asynchronicity issue, maybe a solution that uses a queue will help, so the messages can be flushed when an in app message handler is set later on.

[Bug]: Content cards ordering on Android

Hi, I'm getting content cards with subscribeToContentCards(or setBrazeContentCardsCallback) method on Android, but the ordering is different in every android user, there is no problem on the iOS side.

[Feature]: Push Notification callbacks in the Dart layer

Hello,

as far as I understand there's currently no way of getting callbacks for when Braze receives a push notification. We want to implement some custom code and routing based on the data.

Similar to setBrazeInAppMessageCallback and setBrazeContentCardsCallback that you have implemented.

Another example is Firebase Messaging exposes streams for all types of notifications received.

Unclear upgrade path from 2.x to 3.0.0

While updating all of our packages I noticed that there was a 3.0.0 release.

The release notes docs to not match the linked docs.

Please provide an upgrade path for a config like this:

        Appboy.start(
            withApiKey: brazeConfig.key,
            in: application,
            withLaunchOptions: launchOptions,
            withAppboyOptions: [
                ABKInAppMessageControllerDelegateKey: brazeDelegate,
                ABKEndpointKey: brazeConfig.endpoint,
                ABKEnableAutomaticLocationCollectionKey: false
            ]
        )

contentCardsHandler not called on Android

Hi folks,

plugin: 2.2.0

I'm testing by sending test messages from the braze ui, to my customer id.

I've got content cards (flutter side) and in app messages (native) working nicely on iOS. - This works perfectly.

On android I neither the contentCardsHandler nor the inAppMessageHandler seem to get called although the (native) in app messages work fine.

Setting braze logging to 0 I can see that it's receiving the commands from braze. Things like:
/Braze v16.0.0 .com.braze.push.BrazeFirebaseMessagingService(11489): Got remote message from FCM: {a=Your Content Card is now available and will expire in five minutes., p=0, t=Braze Test Send, _ab=true, cid=dGVzdF90ZXN0X2R43242341111243NTgwNzcxZWZlNjlhNGZiNDdkNjll, ab_cd={"uw":null,

I'm also getting called on the FirebaseMessaging.onMessage callback. So it seems like it's making it's way to the app but it's like I'm missing some kind of registering the plugin for the notifications or something?

Any ideas?

Missing Gradle 8 support

No Gradle 8 support in braze_plugin prevents dependent projects from migrating as well.

Gradle 8 support already added here: #56

Error when updating to 3.0.0

I'm getting the following error:

The 'Pods-Runner' target has transitive dependencies that include statically linked binaries: (/.../ios/Pods/BrazeKit/BrazeKit.xcframework and /.../ios/Pods/BrazeLocation/BrazeLocation.xcframework)

Changing use_frameworks! to use_frameworks! :linkage => :static seems to be a workaround, would prefer to see a fix.

[Feature]: Rich push notifications, push stories

We need to configure push stories. We have already configured rich push notifications according to the documentation: https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/customization/rich_notifications/#configuring-the-service-extension-to-work-with-braze.
We try to configure push stories according to this documentation: https://www.braze.com/docs/developer_guide/platform_integration_guides/ios/push_notifications/push_story/. Does one configuration affect the other? It would be great to add more detailed documentation to configure these things in Flutter.

[Feature] Can braze support In App Message Clicked Listener ?

Background
Flutter: 2.10.5
braze_plugin: ^2.6.1

We want to use deep link in the braze In App Message buttons. And Parse the deep link when users click the In App Message button.

We used the subscribeToInAppMessages to handle the case when user receives an In App Message in flutter.
But there doesn't seem to be a way to listen to the click event.

Any suggestions?

On iOS, can't see user id used on `changeUser` on Dashboard

After call BrazePlugin().changeUser running my app on iOS emulator, the id not appears on Braze Dashboard User Search.

Braze plugin version: ^2.5.0

Steps to reproduce:

  1. create a flutter project with flutter create
  2. add braze plugin with flutter pub add braze_plugin
  3. follow Step 2: Complete native setup of documentation
  4. add BrazePlugin().changeUser call on main function inside main.dart:
void main() {
  WidgetsFlutterBinding.ensureInitialized();

  BrazePlugin().changeUser("braze-test");

  runApp(const MyApp());
}

Flutter doctor output:

Doctor summary (to see all details, run flutter doctor -v):
[โœ“] Flutter (Channel stable, 3.3.2, on macOS 12.6 21G115 darwin-x64, locale
    en-BR)
[โœ“] Android toolchain - develop for Android devices (Android SDK version
    33.0.0-rc2)
[โœ“] Xcode - develop for iOS and macOS (Xcode 14.0.1)
[โœ“] Chrome - develop for the web
[โœ“] Android Studio (version 2021.2)
[โœ“] VS Code (version 1.71.2)
[โœ“] Connected device (3 available)
[โœ“] HTTP Host Availability

โ€ข No issues found!

Upgrade to 5.0.0 seems broken

After updating our plugin dependency to 5.0.0 and running pod install โ€“repo-update I get the following:

[!] CocoaPods could not find compatible versions for pod "BrazeLocation":
  In snapshot (Podfile.lock):
    BrazeLocation (= 5.12.0, ~> 5.12.0)

  In Podfile:
    braze_plugin (from `.symlinks/plugins/braze_plugin/ios`) was resolved to 5.0.0, which depends on
      BrazeLocation (~> 6.0.0)


You have either:
 * changed the constraints of dependency `BrazeLocation` inside your development pod `braze_plugin`.
   You should run `pod update BrazeLocation` to apply changes you've made.

Content card logging documentation is incomplete

Looking at the inline docs, we have this:

/// Logs a click for the provided Content Card data
void logContentCardClicked(BrazeContentCard contentCard) {

and this

/// Logs a click for the provided Content Card data
void logContentCardImpression(BrazeContentCard contentCard) {

Whats the actual difference? Or is this wrongly documented?

Content card methods need return values/error reporting

I am attempting to use the content card methods however I do not have the ability to know if they failed or passed other than a print out in the console. Can you please add the boolean return type that is already there or even better, return the error when applicable. See code below for what I would like updated:

BrasePLugin.kt

        "logContentCardClicked" -> {
          val contentCardString = call.argument<String>("contentCardString")
          if (contentCardString != null) {
            val contentCard = Braze.getInstance(context).deserializeContentCard(contentCardString)
            if (contentCard != null) {
              result.success(contentCard.logClick()) **// ADD RESULT.SUCCESS**
            }
          }
        }
        "logContentCardImpression" -> {
          val contentCardString = call.argument<String>("contentCardString")
          if (contentCardString != null) {
            val contentCard = Braze.getInstance(context).deserializeContentCard(contentCardString)
            if (contentCard != null) {
              result.success(contentCard.logImpression())) **// ADD RESULT.SUCCESS**
            }
          }
        }
        "logContentCardDismissed" -> {
          val contentCardString = call.argument<String>("contentCardString")
          if (contentCardString != null) {
            val contentCard = Braze.getInstance(context).deserializeContentCard(contentCardString)
            if (contentCard != null) {
              result.success(contentCard.setIsDismissed(true))) **// ADD RESULT.SUCCESS**
            }
          }
        }

This is currently causing us headaches for custom content card implementations.

Thanks!

Derek

BREAKING with latest Android SDK 22.0.0 release

We are using version 2.5.0 in our project and this morning we started getting issues with IEventSubscriber regarding its import which seems to be updated here: https://github.com/Appboy/appboy-android-sdk/blob/master/CHANGELOG.md#2200

I don't expect us to get this breaking change without any updates to the package on the Flutter side. Even updating the import and running the project makes flutter run fail silently

This is running in verbose mode and it suddenly just quits.

[        ] "flutter run" took 97,706ms.
[   +2 ms] 
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
           #1      RunCommand.runCommand (package:flutter_tools/src/commands/run.dart:699:9)
           <asynchronous suspension>
           #2      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1183:27)
           <asynchronous suspension>
           #3      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
           <asynchronous suspension>
           #4      CommandRunner.runCommand (package:args/command_runner.dart:209:13)
           <asynchronous suspension>
           #5      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:281:9)
           <asynchronous suspension>
           #6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
           <asynchronous suspension>
           #7      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:229:5)
           <asynchronous suspension>
           #8      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:62:9)
           <asynchronous suspension>
           #9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:150:19)
           <asynchronous suspension>
           #10     main (package:flutter_tools/executable.dart:94:3)
           <asynchronous suspension>

logContentCardClicked implements different behaviour when url is set

Calling logContentCardClicked with the below content, the 3.1.0 SDK launches the phones browser which is different from the 2.5.0 SDK where no browser is opened.

This change in behaviour effects the custom UI flow that we have implemented.

contentCardJsonString = "{}"
clicked = true
created = 1677231900
description = "Description"
dismissable = true
expiresAt = 1679651100
extras = {_Map} size = 4
id = "some id"
image = "Image url"
imageAspectRatio = 2.0
linkText = "Link text"
pinned = false
removed = false
title = "Title"
type = "captioned_image"
url = "https://google.com"
useWebView = false
viewed = true
isControl = false

note: this seems to happen on iOS only, wil post a reference to this ticket.

braze-inc/braze-swift-sdk#49

[Bug]: Issue with Content Cards custom implementation

When trying to custom implement Content Cards using subscribeToContentCards, the callback for content cards is not triggered when the content card list is empty inside the Braze SDK. A guard condition is found here that prevented the callback to be triggered.

In the case of there is only 1 content card left in the Braze SDK, when that card is either dismissed or expired, the card is removed from the Braze SDK content card list, but my application doesn't get notified via the subscribe callback due to the empty card list check. Therefore there is no way for my application to update custom content card UI to reflect the state change of the content card list (from 1 content card in the list -> empty content card list).

Is it possible to remove the condition linked above?

An InAppMessage is both shown nativly and processed by the flutter SDK

Steps to reproduce

  1. Update to Braze 2.2.0
  2. Enable automatic integration "Streamlines the Android integration process to not involve any manual writing of code to automatically register for sessions, in-app messages, or Content Card updates from the native SDK."
  3. Start an InAppMessage campaign

Expected:
The in app message is also handeld by the in app message handler

Actual:
The in app message is shown using the Braze SDK itself and the in app message is also handeld by the in app message handler

Braze config:

BrazePlugin(customConfigs: {replayCallbacksConfigKey: true})..enableSDK()

I'm awaiting approval if I can share screenshots

Braze in Flutter Environment Production Not Working

Currently, I have 2 environments in braze i.e. dev and prod which have different keys. Then in my flutter project I put the keys for dev in debug/res/values and for prod in prod/res/values. Once running, for a dev environment, you can track logged in users. But after changing to prod, user doesn't go to track. After checking the user to the track on the dev.

can in 1 project there are 2 key braze?

In App Messages image url not valid (v4.1.0)

After updating to 4.1.0 we see the following issue popping up in our Sentry monitoring:

Invalid argument(s): No host specified in URI file:///var/mobile/Containers/Data/Application/224B0CEF-F064-449F-B78D-EE0F12A5B4A5/Library/Caches/com.braze.inappmessage/a2bec79c9885bb2172e0577de4f09b00a034b0ac47d627a89673c977672e4d92/f3fe2c8ef3347780b65da4969640ca326a6b4bd9468673f2a135f2d4ac9217c7.jpg
Crashed in non-app:
http_impl.dart in _HttpClient._openUrl
System
io_client.dart in IOClient.send at line 57 within http
In App
file_service.dart in HttpFileService.get at line 35 within flutter_cache_manager
In App
web_helper.dart in WebHelper._download at line 121 within flutter_cache_manager
In App
web_helper.dart in WebHelper._updateFile at line 103 within flutter_cache_manager
In App
Called from:
<asynchronous suspension>
System
web_helper.dart in WebHelper._downloadOrAddToQueue at line 71 within flutter_cache_manager

We also see the following HTTP requests being made beforehand (which could also be content cards):
afbeelding

It only happens on iOS, we do not see a similar issue on Android.

Braze Regiested firebase Toke to APPBOYreceiver

Hello Team,
I am unable to attach my Firebase Token to appboy receiver. Since i need to send individual notifications to users that cannot happen without deviceID so any steps how to register and get the deviceID

@Bucimis any suggestions which can be provied

[Help Needed] In App Messages not showing

Hi guys,

We have already implemented Push Notifications with Braze, they are working fine (we did it though Segment Cloud Mode integration with Braze), but we are not being able to make the In-App messages work (for now we are just trying this only on Android).

Here is the Flutter + Android implementation:

Flutter Activity
class MainActivity : FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        GeneratedPluginRegistrant.registerWith(flutterEngine)
        flutterEngine.getPlugins().add(SharedPreferencesPlugin())
    }

    override fun attachBaseContext(base: Context) {
        super.attachBaseContext(base)
        MultiDex.install(this)
    }

    public override fun onResume() {
        super.onResume()
        // Registers the BrazeInAppMessageManager for the current Activity. This Activity will now listen for
        // in-app messages from Braze.
        BrazeInAppMessageManager.getInstance().registerInAppMessageManager(this)
    }
}
Application Class
class CustomApplication : FlutterApplication() {
    override fun onCreate() {
        super.onCreate()
        registerActivityLifecycleCallbacks(
            BrazeActivityLifecycleCallbackListener(
                sessionHandlingEnabled = true,
                registerInAppMessageManager = true
            )
        )

        BrazeInAppMessageManager.getInstance().ensureSubscribedToInAppMessageEvents(applicationContext)
    }
}
Custom Messaging Service Class
@SuppressLint("MissingFirebaseInstanceTokenRefresh")
class MyFirebaseMessagingService : FirebaseMessagingService() {
    override fun onMessageReceived(remoteMessage: RemoteMessage) {
        if (BrazeFirebaseMessagingService.isBrazePushNotification(remoteMessage)) {
            Log.d("MessagingService", "Braze Push Notification");
            BrazeFirebaseMessagingService.handleBrazeRemoteMessage(this, remoteMessage)
        } else {
            Log.d("MessagingService", "New Push Notification");
            super.onMessageReceived(remoteMessage)
        }
    }
}

However, we can see in the logs that the Push Notification (about In App Message) arrives but is not rendered at all:

I: Got remote message from FCM: {a=Tap to see Test In-App Message, p=0, t=Braze Test Send, _ab=true, cid=dGVzdF90ZXN0X2RpPTYzNzNkYTYwMTk1ODZiMTQwYWQxOTZkMWVjYmE5YjQ0, ab_nc=default_channel_id_in_app_notification, ab_push_fetch_test_triggers_key=true}
I: Push message payload received: Bundle[{a=Tap to see Test In-App Message, p=0, t=Braze Test Send, _ab=true, cid=dGVzdF90ZXN0X2RpPTYzNzNkYTYwMTk1ODZiMTQwYWQxOTZkMWVjYmE5YjQ0, ab_nc=default_channel_id_in_app_notification, ab_push_fetch_test_triggers_key=true}]

I am using the latest Braze SDKs (For Flutter and Android) on the latest Flutter version (3.7.+)

Can't build Android with version 5.0.0

Upgrade to braze_plugin: ^5.0.0
Can't build Android,
Error:

`* What went wrong:
Execution failed for task ':app:checkReleaseDuplicateClasses'.

A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable
Duplicate class bo.app.a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a0$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a1$g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a5$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a5$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a5$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.a6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b$a$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b$a$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$h found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$i found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$j found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$k found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$l found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$m found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$n found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$o found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$p found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$q found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$r found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$s found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$t found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b0$u found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b1$g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.b6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c0$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c0$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c0$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c0$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c0$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c1$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c1$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c1$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c1$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c1$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.c6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$h found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$i found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d0$j found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d1$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.d6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e1$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e3$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.e6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f$c$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f1$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f1$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f1$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f1$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f3$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.f6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.g6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h0$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h4$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h6$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.h6$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$b$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$b$a$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$b$a$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$h found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$h$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$i found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$j found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$k found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$l found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$m found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$n found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$o found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$p found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$q found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$r found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$s found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i0$t found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i1 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i2 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i3 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i4 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i4$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i4$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i5 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.i6 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$a found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$a0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$b found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$b0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$c found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$c0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$d found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$d0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$e found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$e0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$f found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$f0 found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$g found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$h found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$i found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$j found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$k found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$l found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$m found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)
Duplicate class bo.app.j$a$n found in modules jetified-android-sdk-base-24.3.0-runtime (com.appboy:android-sdk-base:24.3.0) and jetified-android-sdk-base-25.0.0-runtime (com.braze:android-sdk-base:25.0.0)`

"None of the selected users have matching push tokens for iOS Push"

os: iOS
braze_plugin: 2.1.0
flutter:2.5.1

Hi folks! :)

I think I've followed the instructions in the readme for this plugin. However the braze UI won't send any pushes. It says "None of the selected users have matching push tokens for iOS Push".

I have push notifications working in the app with firebase at the moment, so the overall app setup/signing is probably ok. I have the user permissions request working.

What I presume I'm missing is the sending of the device token to braze (unless it's done automagically under the hood) - I have the APNS token on the flutter side but there's no api to send it to. (There is one for Android though)

What's the correct way to set this up? Do I need to send this from the native code in the iOS runner?

Tapping Braze notification on Android doesn't open the app

After tapping a push notification delivered by Braze on an Android device the app doesn't start. It doesn't look like it crashed, just the activity is closed immediately after start. The app is behaving the same for all available interaction modes available in the web creator.
image

Tested on modes:

  • Open App
  • Redirect to Web URL (with "Open Web URL Inside App" enabled and disabled)
  • Deep Link Into Application

As the app closes so quickly, Flutter engine doesn't even start, so it's (most probably) not caused by the Dart code.

Here are some relevant logcat logs:

  • logs including app's package name:
12-16 11:11:10.281 12185 12185 I Braze v23.2.0 .BrazePushReceiver: Received broadcast message. Message: Intent { act=com.appboy.action.APPBOY_PUSH_CLICKED cmp=*PACKAGE_NAME*/com.braze.push.BrazePushReceiver (has extras) }
12-16 11:11:10.353  1672  1730 D ArtManagerInternalImpl: /data/misc/iorapd/*PACKAGE_NAME*/1/com.braze.push.NotificationTrampolineActivity/compiled_traces/compiled_trace.pb doesn't exist
12-16 11:11:10.353  8294  9550 D RecentTasksList: dumpTasks# id=174, cmp=ComponentInfo{*PACKAGE_NAME*/com.braze.push.NotificationTrampolineActivity}, uid=0, locked=false, isAppLocked=false;
12-16 11:11:10.354  1672  1776 I ===> HoustonPackage: addLaunchTimeInfo: for *PACKAGE_NAME*/com.braze.push.NotificationTrampolineActivity isCold:false launchTime:108
12-16 11:11:10.354  1672  1776 I 322     : *PACKAGE_NAME*#-1#108
12-16 11:11:10.354  1672  1730 I ActivityTaskManager: Displayed *PACKAGE_NAME*/com.braze.push.NotificationTrampolineActivity: +108ms
12-16 11:11:10.494  1672  1716 D OpRestartProcessManager: Duration is too short, ignore : 246 in *PACKAGE_NAME*
12-16 11:11:10.495  1672 17471 W ActivityTaskManager: Duplicate finish request for r=ActivityRecord{8609209 u0 *PACKAGE_NAME*/com.braze.push.NotificationTrampolineActivity t174 f}}
12-16 11:11:10.497  1672  1774 I OpMotorManagerService: notifyActivityChanged: mBackgroudPkg = *PACKAGE_NAME* mFocusPkg = net.oneplus.launcher mIsSplitMode = false mBackActivity = com.braze.push.NotificationTrampolineActivity mFocusActivity = net.oneplus.launcher.Launcher
  • logs including Braze (case-insensitive) string:
12-16 11:21:49.174 12185 25223 I Braze v23.2.0 .BrazeFirebaseMessagingService: Got remote message from FCM: {a=test, p=0, t=*APP_NAME*, _ab=true, cid=*PROBABLY_SENSITVE_ID*, ab_nc=com_appboy_default_notification_channel}
12-16 11:21:49.176 12185 24404 I Braze v23.2.0 .BrazePushReceiver: Received broadcast message. Message: Intent { act=firebase_messaging_service_routing_action (has extras) }
12-16 11:21:49.177 12185 24404 I Braze v23.2.0 .BrazePushReceiver: Push message payload received: Bundle[{a=test, p=0, t=*APP_NAME*, _ab=true, cid=*PROBABLY_SENSITVE_ID*, ab_nc=com_appboy_default_notification_channel}]
12-16 11:21:49.410 12185 24404 I Braze v23.2.0 .z0: Event was published, but no subscribers were found. Saving event for later publishing to a matching subscriber. Event class: class com.braze.events.BrazePushEvent
12-16 11:21:58.507 12185 12185 I Braze v23.2.0 .BrazePushReceiver: Received broadcast message. Message: Intent { act=com.appboy.action.APPBOY_PUSH_CLICKED cmp=*PACKAGE_NAME*/com.braze.push.BrazePushReceiver (has extras) }
12-16 11:21:58.508 12185 12185 I Braze v23.2.0 .z0: Event was published, but no subscribers were found. Saving event for later publishing to a matching subscriber. Event class: class com.braze.events.BrazePushEvent
12-16 11:21:58.509 12185 24408 I Braze v23.2.0 .Braze: Logging push click. Campaign Id: *PROBABLY_SENSITVE_ID*
12-16 11:21:58.509 12185 12185 I Braze v23.2.0 .BrazeNotificationUtils: Not handling deep links automatically, skipping deep link handling
12-16 11:21:58.509 12185 24408 I Braze v23.2.0 .y0: Requesting trigger update due to trigger-eligible push click event
12-16 11:21:58.521 12185 24408 I Braze v23.2.0 .t: New session created with ID: *SESSION_ID*
12-16 11:21:58.521 12185 24408 I Braze v23.2.0 .o: Location collection disabled via sdk configuration.
12-16 11:21:58.522 12185 24408 I Braze v23.2.0 .o: Did not request single location update. Location collection is disabled.
12-16 11:21:58.523 12185 24408 I Braze v23.2.0 .z0: Event was published, but no subscribers were found. Saving event for later publishing to a matching subscriber. Event class: class com.braze.events.SessionStateChangedEvent
12-16 11:21:58.533 12185 24408 I Braze v23.2.0 .p: Completed the openSession call. Starting or continuing session *SESSION_ID*
12-16 11:21:58.699 12185 24405 I Braze v23.2.0 .a0: Updating offline Content Cards for user with id: 
12-16 11:21:58.712 12185 24607 I Braze v23.2.0 .z0: Event was published, but no subscribers were found. But not saving event for publishing later. Event class: class com.braze.events.NoMatchingTriggerEvent
12-16 11:21:58.712 12185 24607 I Braze v23.2.0 .z0: Event was published, but no subscribers were found. But not saving event for publishing later. Event class: class com.braze.events.NoMatchingTriggerEvent
12-16 11:21:59.433 12185 24408 I Braze v23.2.0 .z0: Event was published, but no subscribers were found. But not saving event for publishing later. Event class: class com.braze.events.NoMatchingTriggerEvent

App setup:

  • Braze Flutter plugin version: ^2.5.0. We're planning to switch to 3.0.0 soon, but previous version of the plugin is already live on user devices, so any remote (hot)fixes will be appreciated.
  • Native Segment-Braze integration version: com.appboy:appboy-segment-integration:14.0.0

Onclick android push notification, app is crashing

We are using braze sdk with our flutter app . In iOS side things are working fine . But when it comes to android, on click of push notification app is crashing (when app is in background).

Do you guys have any sample to illustrate working and handling of android push notifications?

We didn't get any exception in the logs . The logs we got when push notifications is as follows:

BMP:BackgroundEventManager(1
6492): Activity paused:
com.braze.push.NotificationTram
polineActivity
I/BMP:LifecycleCallbacks(16492):
Activity Paused:
com.braze.push.NotificationTram
polineActivity
[/BMP:LifecycleCallbacks(16492):
Activity Destroyed:
com.maersk.trackandtrace.maers
kshipment_trackandtrace.MainAc
tivity
I/BMP:LifecycleCallbacks(16492):
Activity
Stopped:com.braze.push.Notifica
tionTrampolineActivity
I/BMP:LifecycleCallbacks(16492):
Activity Destroyed:
com.braze.push.NotificationTram
polineActivity

[Bug]: Content card image aspect ratio decode bug

Hey there, just mentioning that there is a bug in the deserialisation logic for the BrazeContentCard.imageAspectRatio property:
https://github.com/braze-inc/braze-flutter-sdk/blob/master/lib/braze_plugin.dart#L680

When ratio is an integer, it doesn't meet that condition logic and keeps its default value of 1. Pretty easy to confirm with the following test:

// bug not parsing aspect ratio if it is an int
final card = BrazeContentCard('{"ar":2}');
expect(card.imageAspectRatio, isNot(2));

// but it parses if it's a double
final card2 = BrazeContentCard('{"ar":2.0}');
expect(card2.imageAspectRatio, 2);

Quick and simple fix would be to replace that condition logic by:
imageAspectRatioJson is num
Implicit cast will take care of integers upon assignment.

I can work around it no problem, but I'd love not having to :)

Thanks!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.