@@ -35,11 +35,11 @@ internal constructor(
35
35
backgroundDispatcher: CoroutineDispatcher ,
36
36
transportFactoryProvider: Provider <TransportFactory >,
37
37
) {
38
- private val sessionGenerator = SessionGenerator (collectEvents = true )
38
+ private val sessionSettings = SessionsSettings (firebaseApp.applicationContext)
39
+ private val sessionGenerator = SessionGenerator (collectEvents = shouldCollectEvents())
39
40
private val eventGDTLogger = EventGDTLogger (transportFactoryProvider)
40
41
private val sessionCoordinator =
41
42
SessionCoordinator (firebaseInstallations, backgroundDispatcher, eventGDTLogger)
42
- private val sessionSettings = SessionsSettings (firebaseApp.applicationContext)
43
43
44
44
init {
45
45
val sessionInitiator =
@@ -62,9 +62,18 @@ internal constructor(
62
62
val sessionDetails = sessionGenerator.generateNewSession()
63
63
val sessionEvent = SessionEvents .startSession(firebaseApp, sessionDetails, sessionSettings)
64
64
65
- if (sessionDetails.collectEvents) {
66
- sessionCoordinator.attemptLoggingSessionEvent(sessionEvent )
65
+ if (! sessionDetails.collectEvents) {
66
+ Log .d( TAG , " Session Start event sampled. " )
67
67
}
68
+
69
+ sessionCoordinator.attemptLoggingSessionEvent(sessionEvent)
70
+ }
71
+
72
+ /* * Calculate whether we should sample events using [sessionSettings] data. */
73
+ private fun shouldCollectEvents (): Boolean {
74
+ // Sampling rate of 1 means we do not sample.
75
+ val randomValue = Math .random()
76
+ return randomValue <= sessionSettings.samplingRate
68
77
}
69
78
70
79
companion object {
0 commit comments