From 4639ee4ed7dfbf5c92201512d93a3d78812c8d20 Mon Sep 17 00:00:00 2001 From: Yansong Yang Date: Wed, 31 Jul 2024 11:34:28 -0500 Subject: [PATCH 1/4] Update the test app for smoke testing (core/lifecycle/signal) (#695) * update test app * Update test app for Lifecycle * address review comments * Update CoreView.kt --------- Co-authored-by: Praveen Co-authored-by: Prashanth Rudrabhat <96199823+prudrabhat@users.noreply.github.com> --- .../src/main/assets/ADBMobileConfig-rules.zip | Bin 1056 -> 818 bytes .../src/main/assets/ADBMobileConfig.json | 1 + .../main/assets/ADBMobileConfig_custom.json | 10 +++ .../marketing/mobile/core/testapp/CoreView.kt | 60 ++++++++++++------ .../mobile/core/testapp/LifecycleView.kt | 27 ++++++++ .../marketing/mobile/core/testapp/MyApp.kt | 2 + .../mobile/core/testapp/SignalView.kt | 30 ++------- .../mobile/core/testapp/Utilities.kt | 32 ++++++---- .../services/ObservableNetworkService.kt | 19 ++++++ 9 files changed, 124 insertions(+), 57 deletions(-) create mode 100644 code/testapp/src/main/assets/ADBMobileConfig_custom.json create mode 100644 code/testapp/src/main/java/com/adobe/marketing/mobile/services/ObservableNetworkService.kt diff --git a/code/testapp/src/main/assets/ADBMobileConfig-rules.zip b/code/testapp/src/main/assets/ADBMobileConfig-rules.zip index a3c17a693d4d8e043cb09c72cd931196f71b7a14..a49084bb8d5172b5cc39c8a4e66afc071136422d 100644 GIT binary patch delta 576 zcmZ3$v5Bodz?+#xgn| z7(|y=a5FHnd}m}}0P1I8m>cBScgTR}Pxtvy@5E5Y^?wp>-sTF;O!9J>EpnYv@yNbf z-xXDnoCm!uRpk29jXsI`c{G3JJ5_JP$fe5{P#5o5ovw5Im*|g6%2O^(;I~ytC`iA{ zvTfhSsDP(E3BvCUpQ$ceUN1D?v#jf@+)MuN4dRaVN#RDNQybhX=Y>coF&J&}p8C;r zS%uT__)GK5UQAfyH*<>Jfp2BraiP*R3V-|VsR;!gTKr(ox4xx6`j%Y!_}674-?=Rr z^;&ATO*}&1v#&ee@2kGd`cABcZC;zH(d*(^og&-W;+vB;UXd@3)i8G78uK<}-z4j2 zi%g~7zJ4)rYVKpBn|!qi8tIoBWAAGnb6`3+Z>Rhz9qak$lf@=^9TRfc`Z+|fY~IGI zH!tqq{q~JJz?+>zSNXcvf)^U_u#lfz%%sHw3*R7M_)cEQw22QCCkRcGGntj^ zVQR3%L4Y?SlL#{+Hj8%c_|OiFn=3#p3XDw{SkhPybVPi-ucNbnaD={IJdS7vIRh=4 Q1158`@UtZX-Os=P06xUiD*ylh delta 785 zcmdnQwt%BPz?+#xgn?3eCv{)Un4+_>eD2p< zc?K^xmv7=-wlrYUrM<#B9GQIkm;9aJCSG5-=;H<6y*E}&mFSPQ>NtD7`@ll|yC(hd zN51S)-zfO~alxJLsTv`>|7G3b`!2gl^w*(n*>}#Hyzi1ZR?qWi_7gs}ngt*GZ@5>b zz5aePyY%ZVj;crRIJX_IWVU#j$D4X$%QE4wm&MEC?+5!Qx4+J0sSzpH*I)g8m2BJN z4*83}ZR*+AxK}0pF0uY1%wOjsRPgTqvLA25UC)*NeP(O3C+q8vZ~u265}cpMxM;GO z*5ukvR@2uk-sbtzt3%GS@Ywd3Z$8^h=G^tR$7lQEhZdc^Dg3wIZa27Cm@>Iy#~#)g33o#J;`N%5dM`wx#0{Lja0q1=s9MBJmGSOo-EcW%Y014X z;h#O+F|RU%=WKJVXG`_U+!}j0kMm8+*}&-h?x2L^MG>37#Z5oL&->hY^;@Yj?*wyi5!XpyY%-p-t{(RN{dpt4Lt7n!KBF6CWrkBJ@tKW>SW$0VTc3tC*xc zKx&G1?fB3ROng^>SQMCCVPHvPD$v&Wcwa|n|KJFHy?7ky7;GUgvpkzWGe|1{={iT> diff --git a/code/testapp/src/main/assets/ADBMobileConfig.json b/code/testapp/src/main/assets/ADBMobileConfig.json index b3679315f..545700d12 100644 --- a/code/testapp/src/main/assets/ADBMobileConfig.json +++ b/code/testapp/src/main/assets/ADBMobileConfig.json @@ -4,5 +4,6 @@ "lifecycle.sessionTimeout": 300, "global.privacy": "optedin", "property.id": "PR16596147e65c4d37980310bae3097e6b", + "bundled_configuration": true, "build.environment": "dev" } \ No newline at end of file diff --git a/code/testapp/src/main/assets/ADBMobileConfig_custom.json b/code/testapp/src/main/assets/ADBMobileConfig_custom.json new file mode 100644 index 000000000..075554d02 --- /dev/null +++ b/code/testapp/src/main/assets/ADBMobileConfig_custom.json @@ -0,0 +1,10 @@ +{ + "rules.url": "https://assets.adobedtm.com/94f571f308d5/fec7505defe0/launch-eaa54c95a6b5-development-rules.zip", + "experienceCloud.org": "972C898555E9F7BC7F000101@AdobeOrg", + "lifecycle.sessionTimeout": 300, + "global.privacy": "optedin", + "property.id": "PR16596147e65c4d37980310bae3097e6b", + "bundled_configuration": true, + "custom_configuration_name": true, + "build.environment": "dev" +} \ No newline at end of file diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt index 920379c1a..4100766b8 100644 --- a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt @@ -11,20 +11,30 @@ package com.adobe.marketing.mobile.core.testapp import android.widget.Toast +import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll import androidx.compose.material.Button +import androidx.compose.material.OutlinedTextField +import androidx.compose.material.Surface import androidx.compose.material.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController @@ -38,6 +48,7 @@ import com.adobe.marketing.mobile.services.ServiceProvider @Composable fun CoreView(navController: NavHostController) { + var appId by remember { mutableStateOf("your-appId") } Column(Modifier.padding(8.dp)) { Button(onClick = { navController.navigate(NavRoutes.HomeView.route) @@ -55,10 +66,32 @@ fun CoreView(navController: NavHostController) { horizontalAlignment = Alignment.CenterHorizontally ) { Button(onClick = { - showCoreVersion() + MobileCore.configureWithFileInAssets("ADBMobileConfig_custom.json") }) { - Text(text = "extensionVersion") + Text(text = "configureWithFileInAssets()") } + Surface( + border = BorderStroke(1.dp, Color.Gray), + shape = RoundedCornerShape(8.dp), + modifier = Modifier.padding(8.dp) + ) { + Column( + modifier = Modifier.padding(PaddingValues(8.dp)), + horizontalAlignment = Alignment.CenterHorizontally + ) { + OutlinedTextField( + value = appId, + onValueChange = { appId = it }, + label = { Text("appId") } + ) + Button(onClick = { + MobileCore.configureWithAppID(appId) + }) { + Text(text = "configureWithAppID(\"appId\")") + } + } + } + Button(onClick = { updateConfiguration() }) { @@ -87,6 +120,12 @@ fun CoreView(navController: NavHostController) { }) { Text(text = "getPrivacyStatus") } + Button(onClick = { + // The bundled rule is configured to triggers a postback for the following condition: a trackAction event with the action type 'bundled_trigger_postback'. + MobileCore.trackAction("bundled_trigger_postback", null) + }) { + Text(text = "trigger rule consequence(postback)") + } Button(onClick = { MobileCore.setLogLevel(LoggingMode.VERBOSE) }) { @@ -184,21 +223,6 @@ fun CoreView(navController: NavHostController) { }) { Text(text = "trackState") } - Button(onClick = { - MobileCore.lifecycleStart(null) - }) { - Text(text = "lifecycleStart") - } - Button(onClick = { - MobileCore.lifecycleStart(mapOf("key" to "value")) - }) { - Text(text = "lifecycleStart(contextData)") - } - Button(onClick = { - MobileCore.lifecyclePause() - }) { - Text(text = "lifecyclePause") - } Button(onClick = { MobileCore.resetIdentities() }) { @@ -234,4 +258,4 @@ fun DefaultPreviewForCoreView() { AEPSDKCoreAndroidTheme { CoreView(rememberNavController()) } -} \ No newline at end of file +} diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/LifecycleView.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/LifecycleView.kt index 91f1896aa..43a40430f 100644 --- a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/LifecycleView.kt +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/LifecycleView.kt @@ -19,9 +19,13 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.navigation.NavHostController +import androidx.navigation.compose.rememberNavController +import com.adobe.marketing.mobile.MobileCore import com.adobe.marketing.mobile.Signal +import com.adobe.marketing.mobile.core.testapp.ui.theme.AEPSDKCoreAndroidTheme @Composable fun LifecycleView(navController: NavHostController) { @@ -37,6 +41,29 @@ fun LifecycleView(navController: NavHostController) { horizontalAlignment = Alignment.CenterHorizontally ) { Text(text = "Signal extension version - ${Signal.extensionVersion()}") + Button(onClick = { + MobileCore.lifecycleStart(null) + }) { + Text(text = "lifecycleStart") + } + Button(onClick = { + MobileCore.lifecycleStart(mapOf("key" to "value")) + }) { + Text(text = "lifecycleStart(contextData)") + } + Button(onClick = { + MobileCore.lifecyclePause() + }) { + Text(text = "lifecyclePause") + } } } +} + +@Preview(showBackground = true) +@Composable +fun DefaultPreviewForCoreViewForLifecycleView() { + AEPSDKCoreAndroidTheme { + LifecycleView(rememberNavController()) + } } \ No newline at end of file diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/MyApp.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/MyApp.kt index c7ff579c2..adc42f8d4 100644 --- a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/MyApp.kt +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/MyApp.kt @@ -13,6 +13,8 @@ package com.adobe.marketing.mobile.core.testapp import android.app.Application import android.util.Log import androidx.core.os.UserManagerCompat +import com.adobe.marketing.mobile.EventSource +import com.adobe.marketing.mobile.EventType import com.adobe.marketing.mobile.Identity import com.adobe.marketing.mobile.Lifecycle import com.adobe.marketing.mobile.LoggingMode diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/SignalView.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/SignalView.kt index 58966b5da..58f03925a 100644 --- a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/SignalView.kt +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/SignalView.kt @@ -51,34 +51,14 @@ fun SignalView(navController: NavHostController) { verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { - Text(text = "Example of the malformed URL: https://www.adobe.com:_80/", fontSize = 10.sp) - OutlinedTextField( - value = url, - onValueChange = { url = it }, - label = { Text("URL") } - ) - Button(onClick = { - MobileCore.dispatchEvent( - Event.Builder("consequence event", EventType.RULES_ENGINE, EventSource.RESPONSE_CONTENT).setEventData( - mapOf( - "triggeredconsequence" to mapOf( - "type" to "pii", - "detail" to mapOf( - "timeout" to 0, - "templateurl" to url - ) - ) - ) - ).build()) + Text(text = "Signal extension version - ${Signal.extensionVersion()}") + Button(onClick = { + // To test this, configure a rule in your launch property that triggers a postbackk for the following condition: a trackAction event with the action type 'trigger_postback'. + MobileCore.trackAction("trigger_postback", null) }) { - Text(text = "post back") + Text(text = "trigger rule consequence(postback)") } - // openURL is covered by automation test, we can enable it later if needed for customer issue verification - Button(onClick = {},enabled = false) { - Text(text = "open URL") - } - Text(text = "Signal extension version - ${Signal.extensionVersion()}") } } diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/Utilities.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/Utilities.kt index 98393c54c..9ecdcb6d8 100644 --- a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/Utilities.kt +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/Utilities.kt @@ -29,25 +29,29 @@ internal val alertEventListener = object : AlertEventListener { } internal fun showAlert(event: Event) { - val alert = Alert(AlertSettings.Builder() - .title("Event") - .message(event.toString()) - .positiveButtonText("OK") - .build() - , alertEventListener) + val alert = Alert( + AlertSettings.Builder() + .title("Event") + .message(event.toString()) + .positiveButtonText("OK") + .build(), alertEventListener + ) - val alertPresentable = ServiceProvider.getInstance().uiService.create(alert, DefaultPresentationUtilityProvider()) + val alertPresentable = + ServiceProvider.getInstance().uiService.create(alert, DefaultPresentationUtilityProvider()) alertPresentable.show() } internal fun showAlert(message: String) { - val alert = Alert(AlertSettings.Builder() - .title("Message") - .message(message) - .positiveButtonText("OK") - .build() - , alertEventListener) + val alert = Alert( + AlertSettings.Builder() + .title("Message") + .message(message) + .positiveButtonText("OK") + .build(), alertEventListener + ) - val alertPresentable = ServiceProvider.getInstance().uiService.create(alert, DefaultPresentationUtilityProvider()) + val alertPresentable = + ServiceProvider.getInstance().uiService.create(alert, DefaultPresentationUtilityProvider()) alertPresentable.show() } diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/services/ObservableNetworkService.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/services/ObservableNetworkService.kt new file mode 100644 index 000000000..d6143df26 --- /dev/null +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/services/ObservableNetworkService.kt @@ -0,0 +1,19 @@ +/* + Copyright 2024 Adobe. All rights reserved. + This file is licensed to you under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. You may obtain a copy + of the License at http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software distributed under + the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS + OF ANY KIND, either express or implied. See the License for the specific language + governing permissions and limitations under the License. + */ +package com.adobe.marketing.mobile.services + +internal class ObservableNetworkService(private val observer: (NetworkRequest) -> Unit) : NetworkService() { + + override fun connectAsync(request: NetworkRequest?, callback: NetworkCallback?) { + request?.let(observer) + super.connectAsync(request, callback) + } +} \ No newline at end of file From b7e4b3976bc8c5577d43173cb23ca936dca8e333 Mon Sep 17 00:00:00 2001 From: Navratan Soni Date: Wed, 21 Aug 2024 23:05:12 +0530 Subject: [PATCH 2/4] Added dialog compose for uiTakeOver --- .../services/ui/message/views/Message.kt | 72 +++++++++++++++---- 1 file changed, 58 insertions(+), 14 deletions(-) diff --git a/code/core/src/phone/java/com/adobe/marketing/mobile/services/ui/message/views/Message.kt b/code/core/src/phone/java/com/adobe/marketing/mobile/services/ui/message/views/Message.kt index 1f7bc8309..4403c80ef 100644 --- a/code/core/src/phone/java/com/adobe/marketing/mobile/services/ui/message/views/Message.kt +++ b/code/core/src/phone/java/com/adobe/marketing/mobile/services/ui/message/views/Message.kt @@ -15,7 +15,12 @@ import android.webkit.WebView import androidx.activity.compose.BackHandler import androidx.compose.animation.core.MutableTransitionState import androidx.compose.runtime.Composable +import androidx.compose.runtime.SideEffect import androidx.compose.runtime.remember +import androidx.compose.ui.platform.LocalView +import androidx.compose.ui.window.Dialog +import androidx.compose.ui.window.DialogProperties +import androidx.compose.ui.window.DialogWindowProvider import com.adobe.marketing.mobile.services.ui.Presentable import com.adobe.marketing.mobile.services.ui.common.PresentationStateManager import com.adobe.marketing.mobile.services.ui.message.GestureTracker @@ -67,7 +72,8 @@ internal fun MessageScreen( inAppMessageSettings = inAppMessageSettings, gestureTracker = gestureTracker, onCreated = { onCreated(it) }, - onDisposed = { onDisposed() } + onDisposed = { onDisposed() }, + onBackPressed = onBackPressed ) } @@ -85,23 +91,61 @@ internal fun Message( inAppMessageSettings: InAppMessageSettings, gestureTracker: GestureTracker, onCreated: (WebView) -> Unit, - onDisposed: () -> Unit + onDisposed: () -> Unit, + onBackPressed: () -> Unit ) { - // Backdrop for the InAppMessage only takes into effect if the InAppMessage is taking over the UI if (inAppMessageSettings.shouldTakeOverUi) { - MessageBackdrop( + /* Dialog is used to take over the UI when the InAppMessage is set to take over the UI. + This is necessary to ensure that the InAppMessage is displayed on top of the UI. + Which will ensure that ScreenReader can read the content of the InAppMessage only and not the underlying UI. + */ + Dialog( + properties = DialogProperties( + usePlatformDefaultWidth = false, + dismissOnBackPress = true, + dismissOnClickOutside = false + ), + onDismissRequest = { + onBackPressed() + } + ) { + /* Remove the default dim and animations for the dialog window + Customer can set their own dim and animations if needed and those will be honoured in MessageBackdrop inside Message + */ + + val dialogWindow = (LocalView.current.parent as? DialogWindowProvider)?.window + + SideEffect { + dialogWindow?.let { + it.setDimAmount(0f) + it.setWindowAnimations(-1) + } + } + + // Backdrop for the InAppMessage only takes into effect if the InAppMessage is taking over the UI + MessageBackdrop( + visibility = isVisible, + inAppMessageSettings = inAppMessageSettings, + gestureTracker = gestureTracker + ) + + // Frame that holds the InAppMessage + MessageFrame( + visibility = isVisible, + inAppMessageSettings = inAppMessageSettings, + gestureTracker = gestureTracker, + onCreated = onCreated, + onDisposed = onDisposed + ) + } + } else { + // Frame that holds the InAppMessage + MessageFrame( visibility = isVisible, inAppMessageSettings = inAppMessageSettings, - gestureTracker = gestureTracker + gestureTracker = gestureTracker, + onCreated = onCreated, + onDisposed = onDisposed ) } - - // Frame that holds the InAppMessage - MessageFrame( - visibility = isVisible, - inAppMessageSettings = inAppMessageSettings, - gestureTracker = gestureTracker, - onCreated = onCreated, - onDisposed = onDisposed - ) } From 9860ebd2bedcbf50499fcd2a3d6ed4cac8fccca0 Mon Sep 17 00:00:00 2001 From: praveek Date: Fri, 23 Aug 2024 20:32:11 -0700 Subject: [PATCH 3/4] Update test app for smoke tests --- .../com/adobe/marketing/mobile/core/testapp/CoreView.kt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt index 4100766b8..ec4edd73d 100644 --- a/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt +++ b/code/testapp/src/main/java/com/adobe/marketing/mobile/core/testapp/CoreView.kt @@ -95,7 +95,7 @@ fun CoreView(navController: NavHostController) { Button(onClick = { updateConfiguration() }) { - Text(text = "updateConfiguration(optedout)") + Text(text = "updateConfiguration") } Button(onClick = { clearUpdatedConfiguration() @@ -124,7 +124,7 @@ fun CoreView(navController: NavHostController) { // The bundled rule is configured to triggers a postback for the following condition: a trackAction event with the action type 'bundled_trigger_postback'. MobileCore.trackAction("bundled_trigger_postback", null) }) { - Text(text = "trigger rule consequence(postback)") + Text(text = "Trigger bundled rule consequence(postback)") } Button(onClick = { MobileCore.setLogLevel(LoggingMode.VERBOSE) @@ -244,7 +244,7 @@ private fun showCoreVersion() { } private fun updateConfiguration() { - MobileCore.updateConfiguration(mapOf("global.privacy" to "optedout")) + MobileCore.updateConfiguration(mapOf("custom_key" to "custom_value")) } private fun clearUpdatedConfiguration() { From 7132ba566ebf7661e3beb2312400d2a57bc6b6f8 Mon Sep 17 00:00:00 2001 From: praveek Date: Fri, 30 Aug 2024 21:29:03 +0000 Subject: [PATCH 4/4] Update versions [Core-3.1.2] --- .../java/com/adobe/marketing/mobile/internal/CoreConstants.kt | 2 +- code/gradle.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/core/src/main/java/com/adobe/marketing/mobile/internal/CoreConstants.kt b/code/core/src/main/java/com/adobe/marketing/mobile/internal/CoreConstants.kt index 1d04a2e6b..fedd11f15 100644 --- a/code/core/src/main/java/com/adobe/marketing/mobile/internal/CoreConstants.kt +++ b/code/core/src/main/java/com/adobe/marketing/mobile/internal/CoreConstants.kt @@ -13,7 +13,7 @@ package com.adobe.marketing.mobile.internal internal object CoreConstants { const val LOG_TAG = "MobileCore" - const val VERSION = "3.1.1" + const val VERSION = "3.1.2" object EventDataKeys { /** diff --git a/code/gradle.properties b/code/gradle.properties index b19e178a4..f742c47d5 100644 --- a/code/gradle.properties +++ b/code/gradle.properties @@ -5,7 +5,7 @@ android.useAndroidX=true #Maven artifacts #Core extension -coreExtensionVersion=3.1.1 +coreExtensionVersion=3.1.2 coreExtensionName=core coreMavenRepoName=AdobeMobileCoreSdk coreMavenRepoDescription=Android Core Extension for Adobe Mobile Marketing