From 2aec0aae3cf554b1ddc28d66e237ce160e2dbdd3 Mon Sep 17 00:00:00 2001 From: Wenxi Zeng Date: Wed, 5 Jun 2024 11:14:16 -0500 Subject: [PATCH] update sample app to force using destination filters on segment.io --- .../filters/app/MainApplication.kt | 54 +++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/sample/src/main/java/com/segment/analytics/destination/filters/app/MainApplication.kt b/sample/src/main/java/com/segment/analytics/destination/filters/app/MainApplication.kt index f8beca5..f2ce0e6 100644 --- a/sample/src/main/java/com/segment/analytics/destination/filters/app/MainApplication.kt +++ b/sample/src/main/java/com/segment/analytics/destination/filters/app/MainApplication.kt @@ -4,8 +4,15 @@ import android.app.Application import com.segment.analytics.destination.filters.app.filters.WebhookPlugin import com.segment.analytics.kotlin.android.Analytics import com.segment.analytics.kotlin.core.Analytics +import com.segment.analytics.kotlin.core.platform.Plugin +import com.segment.analytics.kotlin.core.utilities.updateJsonObject import com.segment.analytics.kotlin.destinations.appsflyer.AppsFlyerDestination import com.segment.analytics.plugins.DestinationFilters +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import kotlinx.serialization.json.Json +import kotlinx.serialization.json.JsonArray +import kotlinx.serialization.json.JsonObject import java.util.concurrent.Executors class MainApplication : Application() { @@ -17,7 +24,7 @@ class MainApplication : Application() { super.onCreate() analytics = Analytics( - "93EMLzmXzP6EJ3cJOhdaAgEVNnZjwRqA", + "tteOFND0bb5ugJfALOJWpF0wu1tcxYgr", applicationContext ) { this.collectDeviceId = true @@ -27,10 +34,51 @@ class MainApplication : Application() { this.flushInterval = 0 } - analytics.add(WebhookPlugin("https://webhook.site/c6349c6a-bc14-49be-9677-0c8df3e07b58", Executors.newSingleThreadExecutor())) +// analytics.add(WebhookPlugin("https://webhook.site/c6349c6a-bc14-49be-9677-0c8df3e07b58", Executors.newSingleThreadExecutor())) analytics.add(AppsFlyerDestination(applicationContext, false)) - analytics.add(DestinationFilters()) + val df = DestinationFilters() + analytics.add(df) + + analytics.analyticsScope.launch { + delay(5000L) + analytics.settingsAsync()?.let { settings -> + settings.middlewareSettings = updateJsonObject(settings.middlewareSettings) { + it["routingRules"] = Json.decodeFromString(""" + [{ + "matchers": [ + { + "ir": "", + "type": "all" + } + ], + "scope": "destinations", + "target_type": "workspace::project::destination::config", + "transformers": [ + [ + { + "type": "drop_properties", + "config": { + "drop": { + "context.device": [ + "id", + "advertisingId", + "model", + "manufacturer" + ] + } + } + } + ] + ], + "destinationName": "Segment.io" + }] + """.trimIndent()) + } + df.update(settings, Plugin.UpdateType.Initial) + } + } + } } \ No newline at end of file