From 776c73103dab6a8b144fa55c01cd80c5df8de779 Mon Sep 17 00:00:00 2001 From: John Rosendahl Date: Tue, 3 Nov 2026 13:53:33 -0700 Subject: [PATCH] Fix demo app bugs - Identify: the visitor ID key used the slug js-sdk instead of the configured android-sdk, so the visitor ID always printed "null". - Kotlin: drop the ca.edge host so both demos use the SDK default (na.edge.optable.co), like the Java demo. - Kotlin: add the Prebid tab to the top-level AppBarConfiguration. - Prebid: clear the global ORTB config when targeting has no or a blank openRtbJson, so a previous result doesn't stick. - Prebid: log witness events as PrebidBannerFragment, not GAMBannerFragment, and say "from cache" on a cache hit (Java). - Remove unused string resources. Co-Authored-By: Claude Opus 5.5 --- .../java/co/optable/demoappjava/ui/IdentifyFragment.java | 2 +- .../co/optable/demoappjava/ui/PrebidBannerFragment.java | 8 +++++--- DemoApp/DemoAppJava/app/src/main/res/values/strings.xml | 3 --- .../main/java/co/optable/androidsdkdemo/MainActivity.kt | 1 + .../main/java/co/optable/androidsdkdemo/TheApplication.kt | 1 - .../java/co/optable/androidsdkdemo/ui/IdentifyFragment.kt | 2 +- .../co/optable/androidsdkdemo/ui/PrebidBannerFragment.kt | 4 +++- DemoApp/DemoAppKotlin/app/src/main/res/values/strings.xml | 4 ---- 8 files changed, 11 insertions(+), 14 deletions(-) diff --git a/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/IdentifyFragment.java b/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/IdentifyFragment.java index fe2e269..51fe83f 100644 --- a/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/IdentifyFragment.java +++ b/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/IdentifyFragment.java @@ -61,7 +61,7 @@ private void onClickIdentify() { } private void checkVisitorId() { - String sfx = "na.edge.optable.co/prebidtest/js-sdk"; + String sfx = "na.edge.optable.co/prebidtest/android-sdk"; String visitorKey = "OPTABLE_PASS_" + Base64.encodeToString(sfx.getBytes(StandardCharsets.UTF_8), 0); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(requireContext()); diff --git a/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/PrebidBannerFragment.java b/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/PrebidBannerFragment.java index fdda230..f1d2096 100644 --- a/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/PrebidBannerFragment.java +++ b/DemoApp/DemoAppJava/app/src/main/java/co/optable/demoappjava/ui/PrebidBannerFragment.java @@ -127,7 +127,7 @@ public void onAdFailedToLoad(@NonNull @NotNull LoadAdError loadAdError) { private void onClickCachedBanner() { OptableTargeting targeting = optable.targetingFromCache(); if (targeting != null) { - changeStatusText("Targeting success"); + changeStatusText("Targeting from cache success"); appendStatusText("GAM targeting keywords: " + targeting.getGamTargetingKeywords()); appendStatusText("OpenRTB JSON: " + targeting.getOpenRtbJson()); appendStatusText("Targeting data: " + targeting.getTargetingData()); @@ -155,8 +155,10 @@ private void applyOptableToPrebid(@Nullable OptableTargeting optableResult) { } String openRtbJson = optableResult.getOpenRtbJson(); - if (openRtbJson != null) { + if (openRtbJson != null && !openRtbJson.trim().isEmpty()) { TargetingParams.setGlobalOrtbConfig(openRtbJson); + } else { + TargetingParams.setGlobalOrtbConfig(null); } } @@ -193,7 +195,7 @@ private void witness() { eventProperties.put("exampleKey2", 123); eventProperties.put("exampleKey3", false); - optable.witness("GAMBannerFragment.loadAdButtonClicked", eventProperties, result -> { + optable.witness("PrebidBannerFragment.loadAdButtonClicked", eventProperties, result -> { if (result instanceof OptableResult.Success) { appendStatusText("Witness Success"); } else if (result instanceof OptableResult.Error error) { diff --git a/DemoApp/DemoAppJava/app/src/main/res/values/strings.xml b/DemoApp/DemoAppJava/app/src/main/res/values/strings.xml index 1f05d05..b4b767b 100644 --- a/DemoApp/DemoAppJava/app/src/main/res/values/strings.xml +++ b/DemoApp/DemoAppJava/app/src/main/res/values/strings.xml @@ -1,6 +1,3 @@ DemoAppJava - Home - Dashboard - Notifications \ No newline at end of file diff --git a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/MainActivity.kt b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/MainActivity.kt index 3a4cc9f..178887f 100644 --- a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/MainActivity.kt +++ b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/MainActivity.kt @@ -55,6 +55,7 @@ class MainActivity : AppCompatActivity() { setOf( R.id.navigation_identify, R.id.navigation_gambanner, + R.id.navigation_prebid, ) ) setupActionBarWithNavController(navController, appBarConfiguration) diff --git a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/TheApplication.kt b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/TheApplication.kt index b7038e0..888a9bc 100644 --- a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/TheApplication.kt +++ b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/TheApplication.kt @@ -17,7 +17,6 @@ class TheApplication : Application() { providedContext = this, tenant = "prebidtest", originSlug = "android-sdk", - host = "ca.edge.optable.co", origin = "https://www.optable.co", ) optable = OptableSDK(config) diff --git a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/IdentifyFragment.kt b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/IdentifyFragment.kt index 95722e6..f0d1d87 100644 --- a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/IdentifyFragment.kt +++ b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/IdentifyFragment.kt @@ -61,7 +61,7 @@ class IdentifyFragment : Fragment() { private fun checkVisitorId() { - val sfx = "na.edge.optable.co/prebidtest/js-sdk" + val sfx = "na.edge.optable.co/prebidtest/android-sdk" val visitorKey = "OPTABLE_PASS_" + Base64.encodeToString(sfx.toByteArray(StandardCharsets.UTF_8), 0) val prefs = PreferenceManager.getDefaultSharedPreferences(requireContext()) diff --git a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/PrebidBannerFragment.kt b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/PrebidBannerFragment.kt index a48395f..f446426 100644 --- a/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/PrebidBannerFragment.kt +++ b/DemoApp/DemoAppKotlin/app/src/main/java/co/optable/androidsdkdemo/ui/PrebidBannerFragment.kt @@ -168,6 +168,8 @@ class PrebidBannerFragment : Fragment() { val openRtbJson = targeting.openRtbJson if (openRtbJson?.isNotBlank() == true) { TargetingParams.setGlobalOrtbConfig(openRtbJson) + } else { + TargetingParams.setGlobalOrtbConfig(null) } } @@ -205,7 +207,7 @@ class PrebidBannerFragment : Fragment() { private fun witness() { val properties = hashMapOf("exampleKey" to "exampleValue", "anotherExample" to 123, "foo" to false) - optable.witness("GAMBannerFragment.loadAdButtonClicked", properties) { result -> + optable.witness("PrebidBannerFragment.loadAdButtonClicked", properties) { result -> when (result) { is OptableResult.Success -> { appendStatusText("Witness success") diff --git a/DemoApp/DemoAppKotlin/app/src/main/res/values/strings.xml b/DemoApp/DemoAppKotlin/app/src/main/res/values/strings.xml index 0b5aa91..4171842 100644 --- a/DemoApp/DemoAppKotlin/app/src/main/res/values/strings.xml +++ b/DemoApp/DemoAppKotlin/app/src/main/res/values/strings.xml @@ -1,7 +1,3 @@ Android SDK Demo - Identify API - GAM Banner - Identify API - GAM Banner \ No newline at end of file