Skip to content

Commit d19a941

Browse files
authored
feat: add network tracking plugin (#265)
* move event types and properties to Constants * add network tracking constants * add network tracking plugin * add masking to common sensitive params * update rule matching priority (last-to-first) * add domain wildcard host matching * add network tracking options * convert to lazy property
1 parent 32be568 commit d19a941

File tree

11 files changed

+1119
-59
lines changed

11 files changed

+1119
-59
lines changed

android/src/main/java/com/amplitude/android/internal/fragments/AutocaptureFragmentLifecycleCallbacks.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import androidx.annotation.RequiresApi
55
import androidx.fragment.app.Fragment
66
import androidx.fragment.app.FragmentManager
77
import com.amplitude.android.utilities.DefaultEventUtils.Companion.screenName
8-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties
9-
import com.amplitude.android.utilities.DefaultEventUtils.EventTypes
108
import com.amplitude.common.Logger
9+
import com.amplitude.core.Constants.EventProperties
10+
import com.amplitude.core.Constants.EventTypes
1111

1212
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
1313
internal class AutocaptureFragmentLifecycleCallbacks(

android/src/main/java/com/amplitude/android/internal/gestures/AutocaptureGestureListener.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,16 @@ import com.amplitude.android.internal.ViewHierarchyScanner.findTarget
88
import com.amplitude.android.internal.ViewTarget
99
import com.amplitude.android.internal.locators.ViewTargetLocator
1010
import com.amplitude.android.utilities.DefaultEventUtils.Companion.screenName
11-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.ACTION
12-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.HIERARCHY
13-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.SCREEN_NAME
14-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.TARGET_CLASS
15-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.TARGET_RESOURCE
16-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.TARGET_SOURCE
17-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.TARGET_TAG
18-
import com.amplitude.android.utilities.DefaultEventUtils.EventProperties.TARGET_TEXT
19-
import com.amplitude.android.utilities.DefaultEventUtils.EventTypes.ELEMENT_INTERACTED
2011
import com.amplitude.common.Logger
12+
import com.amplitude.core.Constants.EventProperties.ACTION
13+
import com.amplitude.core.Constants.EventProperties.HIERARCHY
14+
import com.amplitude.core.Constants.EventProperties.SCREEN_NAME
15+
import com.amplitude.core.Constants.EventProperties.TARGET_CLASS
16+
import com.amplitude.core.Constants.EventProperties.TARGET_RESOURCE
17+
import com.amplitude.core.Constants.EventProperties.TARGET_SOURCE
18+
import com.amplitude.core.Constants.EventProperties.TARGET_TAG
19+
import com.amplitude.core.Constants.EventProperties.TARGET_TEXT
20+
import com.amplitude.core.Constants.EventTypes.ELEMENT_INTERACTED
2121
import java.lang.ref.WeakReference
2222

2323
@VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)

android/src/main/java/com/amplitude/android/utilities/DefaultEventUtils.kt

Lines changed: 2 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -13,42 +13,13 @@ import com.amplitude.android.internal.fragments.FragmentActivityHandler.unregist
1313
import com.amplitude.android.internal.gestures.AutocaptureWindowCallback
1414
import com.amplitude.android.internal.gestures.NoCaptureWindowCallback
1515
import com.amplitude.android.internal.locators.ViewTargetLocators.ALL
16+
import com.amplitude.core.Constants.EventProperties
17+
import com.amplitude.core.Constants.EventTypes
1618
import com.amplitude.core.Storage
1719
import kotlinx.coroutines.launch
1820

1921
@Deprecated("This class is deprecated and will be removed in future releases.")
2022
class DefaultEventUtils(private val amplitude: Amplitude) {
21-
object EventTypes {
22-
const val APPLICATION_INSTALLED = "[Amplitude] Application Installed"
23-
const val APPLICATION_UPDATED = "[Amplitude] Application Updated"
24-
const val APPLICATION_OPENED = "[Amplitude] Application Opened"
25-
const val APPLICATION_BACKGROUNDED = "[Amplitude] Application Backgrounded"
26-
const val DEEP_LINK_OPENED = "[Amplitude] Deep Link Opened"
27-
const val SCREEN_VIEWED = "[Amplitude] Screen Viewed"
28-
const val FRAGMENT_VIEWED = "[Amplitude] Fragment Viewed"
29-
const val ELEMENT_INTERACTED = "[Amplitude] Element Interacted"
30-
}
31-
32-
object EventProperties {
33-
const val VERSION = "[Amplitude] Version"
34-
const val BUILD = "[Amplitude] Build"
35-
const val PREVIOUS_VERSION = "[Amplitude] Previous Version"
36-
const val PREVIOUS_BUILD = "[Amplitude] Previous Build"
37-
const val FROM_BACKGROUND = "[Amplitude] From Background"
38-
const val LINK_URL = "[Amplitude] Link URL"
39-
const val LINK_REFERRER = "[Amplitude] Link Referrer"
40-
const val SCREEN_NAME = "[Amplitude] Screen Name"
41-
const val FRAGMENT_CLASS = "[Amplitude] Fragment Class"
42-
const val FRAGMENT_IDENTIFIER = "[Amplitude] Fragment Identifier"
43-
const val FRAGMENT_TAG = "[Amplitude] Fragment Tag"
44-
const val ACTION = "[Amplitude] Action"
45-
const val TARGET_CLASS = "[Amplitude] Target Class"
46-
const val TARGET_RESOURCE = "[Amplitude] Target Resource"
47-
const val TARGET_TAG = "[Amplitude] Target Tag"
48-
const val TARGET_TEXT = "[Amplitude] Target Text"
49-
const val TARGET_SOURCE = "[Amplitude] Target Source"
50-
const val HIERARCHY = "[Amplitude] Hierarchy"
51-
}
5223

5324
fun trackAppUpdatedInstalledEvent(packageInfo: PackageInfo) {
5425
// Get current version/build and previously stored version/build information

android/src/test/kotlin/com/amplitude/android/plugins/AndroidLifecyclePluginTest.kt

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import com.amplitude.android.internal.fragments.FragmentActivityHandler
1313
import com.amplitude.android.internal.fragments.FragmentActivityHandler.registerFragmentLifecycleCallbacks
1414
import com.amplitude.android.internal.fragments.FragmentActivityHandler.unregisterFragmentLifecycleCallbacks
1515
import com.amplitude.android.utilities.ActivityLifecycleObserver
16-
import com.amplitude.android.utilities.DefaultEventUtils
16+
import com.amplitude.core.Constants.EventTypes
1717
import com.amplitude.core.Storage
1818
import com.amplitude.core.utilities.InMemoryStorage
1919
import io.mockk.coVerify
@@ -87,7 +87,7 @@ class AndroidLifecyclePluginTest {
8787

8888
verify {
8989
mockedAmplitude.track(
90-
DefaultEventUtils.EventTypes.APPLICATION_INSTALLED,
90+
EventTypes.APPLICATION_INSTALLED,
9191
any(),
9292
any()
9393
)
@@ -109,7 +109,7 @@ class AndroidLifecyclePluginTest {
109109

110110
verify(exactly = 0) {
111111
mockedAmplitude.track(
112-
DefaultEventUtils.EventTypes.APPLICATION_INSTALLED,
112+
EventTypes.APPLICATION_INSTALLED,
113113
any(),
114114
any()
115115
)
@@ -136,7 +136,7 @@ class AndroidLifecyclePluginTest {
136136

137137
verify {
138138
mockedAmplitude.track(
139-
DefaultEventUtils.EventTypes.APPLICATION_UPDATED,
139+
EventTypes.APPLICATION_UPDATED,
140140
any(),
141141
any()
142142
)
@@ -162,7 +162,7 @@ class AndroidLifecyclePluginTest {
162162

163163
verify(exactly = 0) {
164164
mockedAmplitude.track(
165-
DefaultEventUtils.EventTypes.APPLICATION_UPDATED,
165+
EventTypes.APPLICATION_UPDATED,
166166
any(),
167167
)
168168
}
@@ -252,7 +252,7 @@ class AndroidLifecyclePluginTest {
252252

253253
verify(exactly = 1) {
254254
mockedAmplitude.track(
255-
eq(DefaultEventUtils.EventTypes.APPLICATION_OPENED),
255+
eq(EventTypes.APPLICATION_OPENED),
256256
match { param -> param.values.first() == false },
257257
)
258258
}
@@ -275,7 +275,7 @@ class AndroidLifecyclePluginTest {
275275
advanceUntilIdle()
276276
verify(exactly = 1) {
277277
mockedAmplitude.track(
278-
eq(DefaultEventUtils.EventTypes.APPLICATION_OPENED),
278+
eq(EventTypes.APPLICATION_OPENED),
279279
match { param -> param.values.first() == false },
280280
any()
281281
)
@@ -285,7 +285,7 @@ class AndroidLifecyclePluginTest {
285285
advanceUntilIdle()
286286
verify(exactly = 1) {
287287
mockedAmplitude.track(
288-
eq(DefaultEventUtils.EventTypes.APPLICATION_BACKGROUNDED),
288+
eq(EventTypes.APPLICATION_BACKGROUNDED),
289289
any(),
290290
any()
291291
)
@@ -295,7 +295,7 @@ class AndroidLifecyclePluginTest {
295295
advanceUntilIdle()
296296
verify(exactly = 1) {
297297
mockedAmplitude.track(
298-
DefaultEventUtils.EventTypes.APPLICATION_OPENED,
298+
EventTypes.APPLICATION_OPENED,
299299
match { param -> param.values.first() == false },
300300
any()
301301
)
@@ -317,7 +317,7 @@ class AndroidLifecyclePluginTest {
317317
advanceUntilIdle()
318318
verify(exactly = 0) {
319319
mockedAmplitude.track(
320-
eq(DefaultEventUtils.EventTypes.APPLICATION_OPENED),
320+
eq(EventTypes.APPLICATION_OPENED),
321321
match { param -> param.values.first() == false },
322322
)
323323
}
@@ -326,7 +326,7 @@ class AndroidLifecyclePluginTest {
326326
advanceUntilIdle()
327327
verify(exactly = 0) {
328328
mockedAmplitude.track(
329-
eq(DefaultEventUtils.EventTypes.APPLICATION_BACKGROUNDED),
329+
eq(EventTypes.APPLICATION_BACKGROUNDED),
330330
any(),
331331
any()
332332
)
@@ -354,7 +354,7 @@ class AndroidLifecyclePluginTest {
354354

355355
verify(exactly = 1) {
356356
mockedAmplitude.track(
357-
eq(DefaultEventUtils.EventTypes.SCREEN_VIEWED),
357+
eq(EventTypes.SCREEN_VIEWED),
358358
any(),
359359
)
360360
}
@@ -380,7 +380,7 @@ class AndroidLifecyclePluginTest {
380380

381381
verify(exactly = 0) {
382382
mockedAmplitude.track(
383-
eq(DefaultEventUtils.EventTypes.SCREEN_VIEWED),
383+
eq(EventTypes.SCREEN_VIEWED),
384384
any(),
385385
)
386386
}
@@ -411,7 +411,7 @@ class AndroidLifecyclePluginTest {
411411

412412
verify(exactly = 1) {
413413
mockedAmplitude.track(
414-
eq(DefaultEventUtils.EventTypes.DEEP_LINK_OPENED),
414+
eq(EventTypes.DEEP_LINK_OPENED),
415415
any(),
416416
)
417417
}
@@ -441,7 +441,7 @@ class AndroidLifecyclePluginTest {
441441

442442
verify(exactly = 0) {
443443
mockedAmplitude.track(
444-
eq(DefaultEventUtils.EventTypes.DEEP_LINK_OPENED),
444+
eq(EventTypes.DEEP_LINK_OPENED),
445445
any(),
446446
)
447447
}

0 commit comments

Comments
 (0)