*** This repo has moved to https://github.com/braze-inc/braze-segment-android. ***
Braze integration for analytics-android.
If you are using analytics-kotlin, use braze-segment-kotlin to integrate with Braze.
Braze's side-by-side Android SDK integration with Segment.IO
Home Page: https://www.braze.com
License: Other
*** This repo has moved to https://github.com/braze-inc/braze-segment-android. ***
Braze integration for analytics-android.
If you are using analytics-kotlin, use braze-segment-kotlin to integrate with Braze.
In the latest version of appboy-android-sdk(17.0.0) the StringUtils class was removed, which is used in this segment integration sdk.
Hi teams,
I had updated to latest appboy segment integration into 9.0.0, but after that, I got error this..
Caused by java.lang.AssertionError
Could not create instance of e.e.a.p.a. java.lang.NoSuchMethodException: e.e.a.p$a.<init> [interface java.util.Map]
com.segment.analytics.ValueMap.createValueMap (ValueMap.java:70)
com.segment.analytics.ValueMap.coerceToValueMap (ValueMap.java:343)
com.segment.analytics.ValueMap.getList (ValueMap.java:358)
com.segment.analytics.Properties.products (Properties.java:366)
com.segment.analytics.android.integrations.appboy.AppboyIntegration.track (AppboyIntegration.java:264)
on our gradle use segment version
implementation('com.segment.analytics.android:analytics:4.7.0')
Do you know why?
By the way, this error only happen on release build
Thanks..
Copied from segmentio/analytics-react-native#277
Hello,
Upon sending the payload below, for the event 'Order Completed', I am getting the error The productId is empty, not logging in-app purchase to Appboy.
in android's logcat
. This is with verbose logging enabled on Appboy. It's not showing up on Braze's dashboard either.
Interestingly, if I added id
alongside the product_id
inside the products
array, it will log the purchases properly, without the above error
Analytics.track('Order Completed', {
"app_mode": "Regular",
"categories": [
null,
null
],
"discount": 18.75,
"first_order": false,
"line_item_count": 2,
"order_number": "R270573084",
"payment_method": "cash on delivery",
"products": [
{
"id": "27", // if I remove this field, purchases don't logged, but the v2 spec said the field is called product_id, not id
"brand": null,
"category": null,
"image_url": "https://d34e5984yv831d.cloudfront.net/spree/images/attachments/000/000/007/product/open-uri20170530-4-16z7kba?1496181795",
"locale": "en",
"name": "Neutrogena Visibly Clear 2In1 Wash 150ml",
"price": 35.5,
"product_id": "27", // if I add id: "27" as well in the products array, the purchases would get logged.
"product_name": null,
"quantity": 1,
"url": "https://sandbox.danube.sa/en/products/27"
},
{
"id": "2621", // if I remove this field, purchases don't logged, but the v2 spec said the field is called product_id, not id
"brand": null,
"category": null,
"image_url": "https://d34e5984yv831d.cloudfront.net/spree/images/attachments/000/002/563/product/open-uri20170530-4-s76690?1496183783",
"locale": "en",
"name": "Nova Drinking Water 0.6 Ltr",
"price": 152,
"product_id": "2621", // if I add id: "2621" as well in the products array, the purchases would get logged.
"product_name": null,
"quantity": 1,
"url": "https://sandbox.danube.sa/en/products/2621"
}
],
"shipping": 19,
"shipping_method": "Home Delivery",
"status": "order placed",
"subtotal": 187.5,
"total": 187.75
})
I created the above payload based on this document: https://segment.com/docs/connections/spec/ecommerce/v2/
Platform: react-native, Android
Android Appboy SDK version: +--- com.appboy:android-sdk-base:{strictly 12.0.0} -> 12.0.0 (c)
Android Segment Analytics version: +--- com.segment.analytics.android:analytics:{strictly 4.9.1-beta} -> 4.9.1-beta (c)
React Native react-native-appboy-sdk: 1.26.0
React Native @segment/analytics-react-native-appboy: 1.4.1
I've only tested this on Android. I'll update this issue once I've tested this on iOS.
Extra note: Niall Brennan from segment dropped a note from Segment support that the issue may be related to this line. https://github.com/Appboy/appboy-segment-android/blob/master/appboy-segment-integration/src/main/java/com/segment/analytics/android/integrations/appboy/AppboyIntegration.java#L263
EDIT: Worth noting that it's completely ignoring the quantity
field, too - if quantity is 3, it shows up in the dashboard as 1, but I guess that means a ticket rename or a new ticket is needed? Leaving it here so that I remember.
EDIT2: We've decided to integrate directly for this event. See #25 (comment) for further info.
compile 'com.segment.analytics.android:analytics:4.3.0'
compile 'com.appboy:android-sdk-ui:2.2.4'
after read
I already tried some versions of com.appboy:android-sdk-ui, its currently working with 2.0.4, but if I change to 2.1.0 or another one more recent, it always crashes
Hello,
It would be great if the integration could be configured with support for automatic firebase token registration, has this been considered?
appboy-segment-integration 2.1.0 crashes with analytics-android 4.3.0
implementation 'com.appboy:appboy-segment-integration:2.1.0'
implementation 'com.segment.analytics.android:analytics:4.3.0'
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.takescoop.android.dogfood, PID: 12123
java.lang.ClassCastException: com.segment.analytics.ValueMap cannot be cast to com.segment.analytics.Properties
at com.segment.analytics.android.integrations.appboy.AppboyIntegration.track(AppboyIntegration.java:206)
at com.segment.analytics.IntegrationOperation$10.run(IntegrationOperation.java:186)
at com.segment.analytics.Analytics.performRun(Analytics.java:1463)
at com.segment.analytics.Analytics$10.run(Analytics.java:824)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:5835)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1194)
Hi,
I am trying to send user subscriptions data.
However, I am not able to find a documentation about how to do it. Can you please provide me some instruction?
The xml located here, is missing version 8.0.2 and 9.0.0: http://appboy.github.io/appboy-segment-android/sdk/com/appboy/appboy-segment-integration/maven-metadata.xml . Is this intended?
I'm unable to update to 9.0.0 due to this. For now, I force-updated using implementation 'com.appboy:appboy-segment-integration:9.0.0@aar'
.
Hello,
I'm using
com.appboy:appboy-segment-integration:2.1.1
com.zendesk:support:2.0.0
I had this crash, do you guys have any information about this?
It's in a screen where I have an Activity with AppboyFeedFragment() and implement IFeedClickActionListener
Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.android/com.app.android.ui.FeedActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void java.util.concurrent.ThreadPoolExecutor.execute(java.lang.Runnable)' on a null object reference
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3003)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3064)
at android.app.ActivityThread.-wrap14(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1659)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6816)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1563)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1451)
Latest Braze sdk is 10.0.0, but this project is still using sdk 9.0.0.
When could we expect this library to be updated?
Thanks in advance
Hi,
Thank you so much for the hard work.
We are using bundled SDK in our projects and were testing the Android13 related changes. Recently our QA team flagged one issue that we are not receiving the push notifications unless we relaunch the app.
We find out there there's new version available with the potential fix here
We would request you to please update the library as soon as possible as its blocking our further test cases and might impact our release and timelines as well.
Hoping to receive the feedback early as possible :)
Hello,
I'm using
com.appboy:appboy-segment-integration:2.1.1
com.zendesk:support:2.0.0
In the last 2 days I had a few crashes in production in the Android OS 5.1.1, 6.0, 6.0.1 and 7.1.1 in the brands LGE, ZTE, Motorola, Alco and others.
Isn't the segment supposed to support braze with the needed information for the configuration?
Fatal Exception: java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:199)
at com.appboy.Appboy.e(SourceFile:299)
at com.appboy.Appboy.f(SourceFile:77)
at com.appboy.Appboy$18.run(SourceFile:275)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
In identify(), birthday, email, firstName, lastName, gender, phone, and address are set to the standard user attributes. After that, it loops traits object and sets all traits as a custom attributes without filtering the standard trait keys. As a result, I can see these standard attributes are tracked as custom attributes too.
For iOS integration, standard attributes are filtered out when setting the custom attributes as you can see (https://github.com/Appboy/appboy-segment-ios/blob/master/Pod/Classes/SEGAppboyIntegration.m#L139). So, android integration should be fixed.
Is there a specific reason this method isn't yet supported?
Apologies if this is a segment issue
When the Enable Automatic In-App Message Registration
is disabled in the segment dashboard, the value is omitted from the ValueMap settings
which results in the default value of true
being used.
This ultimately means it's impossible to disable the in app message registration (without manually copying the integration).
Is this a known issue, or perhaps there's some misconfiguration on my side?
Thanks!
openSession() is called in the “onActivityStarted” method but “onActivityStarted” is never called when the app is opened after being closed. Therefore, session start is never tracked for the user launches the app if the user has force-quit it
Can it be fixed by calling openSession() right after Appboy instance is created?
double properties seems to be ignored, however, when adding a number to the ValueMap
, the backing map seems to use Double as default type.
Hi,
I ran into an issue where we wanted to defer In-App messages to show up on specific Activities.
(Messages showed up behind our login dialog and would never be visible on first boot)
This is relatively easy when following the manual registration steps as defined here: https://www.braze.com/documentation/Android/#in-app-messaging, but when using this segment integration there is no way I could find to avoid these methods doing registration automatically:
public class AppboyIntegration extends Integration<Appboy> {
...
public void onActivityResumed(Activity activity) {
super.onActivityResumed(activity);
AppboyInAppMessageManager.getInstance().registerInAppMessageManager(activity);
}
public void onActivityPaused(Activity activity) {
super.onActivityPaused(activity);
AppboyInAppMessageManager.getInstance().unregisterInAppMessageManager(activity);
}
...
For now I just went ahead and wrote my own custom version of AppboyIntegration
that doesn't override these methods and that is working perfectly, but it would be nice if there was an easier way to achieve this via configuration.
Hi, accordingly to the change logs [https://github.com/Appboy/appboy-segment-android/blob/master/CHANGELOG.md#breaking], we should have the Braze SDK 8.1.0 to be included but I still find it is still the version 6. Is there any provision on this integration ? Thanks.
Currently, since the integration is doing the init on the Braze
singleton, and this can be done only once, we have no way of "cleanly" enabling the "handle push deeplink" feature.
In the mean time I did the following "hack":
application.getSharedPreferences("com.appboy.override.configuration.cache", 0).edit {
putBoolean("com_appboy_handle_push_deep_links_automatically", true)
}
inside the integration ready callback to overwrite the value.
Would be nice to have the on/off toggle in the segment dashboard
Hi @Bucimis Jared and team,
Any possibility we could upgrade the Braze SDK to v13.1.2 as per recommendation from Braze team (captured below) ? If yes, could you please let us know when we could get the updated SDK ?
I understand that we have upgraded to v13.1.1 but the v13.1.2 has been released and recommended.
Thanks a lot.
Hello ,
We are integrating Braze through Segment in our Xamarin Forms project.
Will you provide Xamarin bindings for this repository?
If not you could you please provide instructions how can we achieve the same behavior ? Please update documentation for this feature through Xamarin as well.
Related : Appboy/appboy-segment-ios#47
wrong project
Currently you are using 10.0.0 of the base sdk, 12.0.0 is the latest
https://github.com/Appboy/appboy-android-sdk/tags
Appboy/appboy-android-sdk@v10.0.0...v12.0.0
getting this error on runtime
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/appboy/enums/SdkFlavor;
I think an SDK must reduce the dependencies with another dependencies. It is a good idea to avoid usage of RemoteMessage
in braze functions inside BrazeFirebaseMessagingService
. I mean is better to just pass what you are going to use.
In my case, I'm using this library as a component that belong to my background message layer. My problem is the way that you use a firebase model force me to include firebase in my Braze component.
fun isBrazePushNotification(remoteMessage: RemoteMessage): Boolean {
val remoteMessageData = remoteMessage.data
return "true" == remoteMessageData[Constants.BRAZE_PUSH_BRAZE_KEY]
}
💡 Suggestion:
fun isBrazePushNotification(data: Map<String, String>): Boolean {
return "true" == data[Constants.BRAZE_PUSH_BRAZE_KEY]
}
fun handleBrazeRemoteMessage(context: Context, remoteMessage: RemoteMessage): Boolean {
if (!isBrazePushNotification(remoteMessage)) {
brazelog(I) { "Remote message did not originate from Braze. Not consuming remote message: $remoteMessage" }
return false
}
val remoteMessageData = remoteMessage.data
brazelog(I) { "Got remote message from FCM: $remoteMessageData" }
val pushIntent = Intent(BrazePushReceiver.FIREBASE_MESSAGING_SERVICE_ROUTING_ACTION)
val bundle = Bundle()
for ((key, value) in remoteMessageData) {
brazelog(V) { "Adding bundle item from FCM remote data with key: $key and value: $value" }
bundle.putString(key, value)
}
pushIntent.putExtras(bundle)
BrazePushReceiver.handleReceivedIntent(context, pushIntent)
return true
}
💡 Suggestion:
fun handleBrazeRemoteMessage(context: Context, data: Map<String, String>): Boolean {
if (!isBrazePushNotification(data)) {
brazelog(I) { "Remote message did not originate from Braze. Not consuming remote message: $remoteMessage" }
return false
}
brazelog(I) { "Got remote message from FCM: $data" }
val pushIntent = Intent(BrazePushReceiver.FIREBASE_MESSAGING_SERVICE_ROUTING_ACTION)
val bundle = Bundle()
for ((key, value) in data) {
brazelog(V) { "Adding bundle item from FCM remote data with key: $key and value: $value" }
bundle.putString(key, value)
}
pushIntent.putExtras(bundle)
BrazePushReceiver.handleReceivedIntent(context, pushIntent)
return true
}
Hi,
Currently, this sdk is using old app boy compile 'com.appboy:android-sdk-ui:2.2.5' but there is a much newer version is available with breaking change on GcmReceiever to Fcm.
Can we get an updated version so we can push the fix?
Hello there.
After updating appboy-segment bundled SDK to v13.0.0 with android 13 changes from braze, we are facing an issue in FCM token registration for the first time. On detailed debugging and analysis we find out that this method onNewToken
in BrazeFirebaseMessagingService
is not invoked for the very first time (in some cases it's not getting invoked even after the first time). Although this method should invoke whenever there's a new token and because that token is not getting registered on Braze that results in no push notifications getting received by the end-user and the user have to kill the app and restart the session multiple times to receive a push notification that is not a good user experience.
It would be super helpful if you guys can look into this issue on top priority.
PS. I have also updated SDK to 14.0.0 but still facing the same issue.
Proposed changes: To resolve this issue, we are setting the FCM token by explicitly calling this method setRegisteredPushToken
. Please let me know your thoughts on this resolution. For getting FCM token we are using Firebase BoM with version 28.3.0 for messaging SDK.
Code snippet:
FirebaseMessaging.getInstance().getToken().addOnCompleteListener(task -> {
if (task.isSuccessful()) {
braze.setRegisteredPushToken(task.getResult());
}
});
Hello Team 👋
I'm using Appboy with Segment integration. This is my appboy configuration implementation in the main application:
AppboyConfig appboyConfig = new AppboyConfig.Builder()
.setIsFirebaseCloudMessagingRegistrationEnabled(true)
.setFirebaseCloudMessagingSenderIdKey(firebaseConfig.projectNumber)
.setHandlePushDeepLinksAutomatically(true)
.build();
Appboy.configure(this, appboyConfig);
registerActivityLifecycleCallbacks(new AppboyLifecycleCallbackListener(true, true));
I'm using the library version 7.0.0: com.appboy:appboy-segment-integration:7.0.0
For the pre-login experience, I'm seeing a high number of error logs in stacktrace generated by Appboy. It's trying to fetch the API keys from res/values/appboy.xml
which doesn't exist in my case because the segment SDK fetches the keys for me. What could be the reason? 🤔
Ps: It's not a crash but I'm seeing a Fatal Exception: java.lang.OutOfMemoryError: pthread_create (1040KB stack) failed: Try again
exception on crashlytics for one or two users. I hope it's not related to this. 💥
My stacktrace is filled with them. I have only pasted a few of them. 🗑️
I/Appboy v10.0.0 .com.appboy.Appboy: Appboy outbound network requests are now enabled
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** !! WARNING !! **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No API key set in res/values/appboy.xml **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No cached API Key found from Appboy.configure **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** Braze functionality disabled **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
E/Appboy v10.0.0 .com.appboy.Appboy: Caught exception while retrieving API key.
java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file or from runtime configuration via AppboyConfig. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:35)
at com.appboy.Appboy.getConfiguredApiKey(SourceFile:1)
at com.appboy.Appboy.getInstance(SourceFile:6)
at com.appboy.ui.inappmessage.AppboyInAppMessageManager.ensureSubscribedToInAppMessageEvents(AppboyInAppMessageManager.java:132)
at com.appboy.AppboyLifecycleCallbackListener.onActivityCreated(AppboyLifecycleCallbackListener.java:153)
at android.app.Application.dispatchActivityCreated(Application.java:375)
at android.app.Activity.dispatchActivityCreated(Activity.java:1382)
at android.app.Activity.onCreate(Activity.java:1655)
at androidx.core.app.ComponentActivity.onCreate(ComponentActivity.java:85)
at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:314)
at org.edx.mobile.view.SplashActivity.onCreate(SplashActivity.java:30)
at android.app.Activity.performCreate(Activity.java:8142)
at android.app.Activity.performCreate(Activity.java:8114)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1309)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3549)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3748)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:85)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:135)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:95)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2187)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:8057)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
I/Appboy v10.0.0 .com.appboy.Appboy: Firebase Cloud Messaging found. Setting up Firebase Cloud Messaging.
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** !! WARNING !! **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No API key set in res/values/appboy.xml **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No cached API Key found from Appboy.configure **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** Braze functionality disabled **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
E/Appboy v10.0.0 .com.appboy.Appboy: Failed to startup user dependency manager.
java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file or from runtime configuration via AppboyConfig. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:35)
at bo.app.q4.<init>(SourceFile:3)
at com.appboy.Appboy.h(SourceFile:3)
at com.appboy.Appboy.$r8$lambda$LNLRr-BQWVG2_sF6UwoY_xQi_vY(Unknown Source:0)
at com.appboy.Appboy$$ExternalSyntheticLambda32.run(Unknown Source:2)
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:923)
E/Appboy v10.0.0 .com.appboy.Appboy: Cannot publish error on null publisher. This is usually the result of a missing API key.
java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file or from runtime configuration via AppboyConfig. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:35)
at bo.app.q4.<init>(SourceFile:3)
at com.appboy.Appboy.h(SourceFile:3)
at com.appboy.Appboy.$r8$lambda$LNLRr-BQWVG2_sF6UwoY_xQi_vY(Unknown Source:0)
at com.appboy.Appboy$$ExternalSyntheticLambda32.run(Unknown Source:2)
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:923)
I/Appboy v10.0.0 .com.appboy.Appboy: Appboy outbound network requests are now enabled
W/Appboy v10.0.0 .com.appboy.Appboy: API key not present. Not performing action on SDK.
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** !! WARNING !! **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No API key set in res/values/appboy.xml **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No cached API Key found from Appboy.configure **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** Braze functionality disabled **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
E/Appboy v10.0.0 .com.appboy.Appboy: Caught exception while retrieving API key.
java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file or from runtime configuration via AppboyConfig. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:35)
at com.appboy.Appboy.getConfiguredApiKey(SourceFile:1)
at com.appboy.Appboy.getInstance(SourceFile:6)
at com.appboy.AppboyLifecycleCallbackListener.onActivityStarted(AppboyLifecycleCallbackListener.java:121)
at android.app.Application.dispatchActivityStarted(Application.java:408)
at android.app.Activity.dispatchActivityStarted(Activity.java:1414)
at android.app.Activity.onStart(Activity.java:1907)
at org.edx.mobile.view.Hilt_SplashActivity.onStart(Unknown Source:0)
at org.edx.mobile.view.SplashActivity.onStart(SplashActivity.java:58)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1435)
at android.app.Activity.performStart(Activity.java:8173)
at android.app.ActivityThread.handleStartActivity(ActivityThread.java:3602)
at android.app.servertransaction.TransactionExecutor.performLifecycleSequence(TransactionExecutor.java:221)
at android.app.servertransaction.TransactionExecutor.cycleToPath(TransactionExecutor.java:201)
at android.app.servertransaction.TransactionExecutor.executeLifecycleState(TransactionExecutor.java:173)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:97)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2187)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:236)
at android.app.ActivityThread.main(ActivityThread.java:8057)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:620)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1011)
W/Appboy v10.0.0 .com.appboy.Appboy: API key not present. Not performing action on SDK.
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** !! WARNING !! **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No API key set in res/values/appboy.xml **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** No cached API Key found from Appboy.configure **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** Braze functionality disabled **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ** **
W/Appboy v10.0.0 .com.appboy.configuration.AppboyConfigurationProvider: ****************************************************
E/Appboy v10.0.0 .com.appboy.Appboy: Failed to startup user dependency manager.
java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file or from runtime configuration via AppboyConfig. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:35)
at bo.app.q4.<init>(SourceFile:3)
at com.appboy.Appboy.h(SourceFile:3)
at com.appboy.Appboy.$r8$lambda$LNLRr-BQWVG2_sF6UwoY_xQi_vY(Unknown Source:0)
at com.appboy.Appboy$$ExternalSyntheticLambda32.run(Unknown Source:2)
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:923)
E/Appboy v10.0.0 .com.appboy.Appboy: Cannot publish error on null publisher. This is usually the result of a missing API key.
java.lang.RuntimeException: Unable to read the Braze API key from the res/values/appboy.xml file or from runtime configuration via AppboyConfig. See log for more details.
at com.appboy.configuration.AppboyConfigurationProvider.getAppboyApiKey(SourceFile:35)
at bo.app.q4.<init>(SourceFile:3)
at com.appboy.Appboy.h(SourceFile:3)
at com.appboy.Appboy.$r8$lambda$LNLRr-BQWVG2_sF6UwoY_xQi_vY(Unknown Source:0)
at com.appboy.Appboy$$ExternalSyntheticLambda32.run(Unknown Source:2)
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:923)
I/Appboy v10.0.0 .com.appboy.Appboy: Firebase Cloud Messaging found. Setting up Firebase Cloud Messaging.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.