Skip to content

Commit 12169d5

Browse files
Added names to dispatchers, and ability to disable specific dispatchers
1 parent d28c69e commit 12169d5

File tree

11 files changed

+59
-12
lines changed

11 files changed

+59
-12
lines changed

analytics/src/main/java/com/sofakingforever/analytics/Analytics.kt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,7 @@ class Analytics(context: Context, private vararg val dispatchers: AnalyticsDispa
3232
if (settings.isAnalyticsEnabled.not()) return
3333

3434
events.forEach {
35-
3635
dispatchers.forEach { dispatcher ->
37-
3836
try {
3937
dispatcher.track(it)
4038
} catch (e: Exception) {
@@ -48,9 +46,17 @@ class Analytics(context: Context, private vararg val dispatchers: AnalyticsDispa
4846
}
4947

5048
fun setKitEnabled(kit: AnalyticsKit, enabled: Boolean) {
51-
dispatchers.filter { k -> k == kit }.forEach { dispatcher ->
52-
dispatcher.enabled = enabled
53-
}
49+
dispatchers.filter { d -> d.kit == kit }
50+
.forEach { dispatcher ->
51+
dispatcher.enabled = enabled
52+
}
53+
}
54+
55+
fun setDispatcherEnabled(dispatcherName: String, enabled: Boolean) {
56+
dispatchers.filter { d -> d.dispatcherName == dispatcherName }
57+
.forEach { dispatcher ->
58+
dispatcher.enabled = enabled
59+
}
5460
}
5561

5662
}

analytics/src/main/java/com/sofakingforever/analytics/AnalyticsDispatcher.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@ interface AnalyticsDispatcher {
2121

2222
val kit: AnalyticsKit
2323

24+
val dispatcherName : String
25+
2426
var enabled: Boolean
2527

2628
/**

analytics/src/main/java/com/sofakingforever/analytics/kits/logger/LoggerDispatcherImpl.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ import com.sofakingforever.analytics.events.SetUserProperty
1717
*/
1818
class LoggerDispatcherImpl(override val init: Boolean) : AnalyticsDispatcher {
1919

20+
override val dispatcherName: String = "LoggerDispatcher"
21+
2022
constructor() : this(true)
2123

2224
override var enabled: Boolean = true
2325

24-
private val tag = "LoggerDispatcher"
26+
private val tag = dispatcherName
2527

2628
override val kit: AnalyticsKit = LoggerKit.instance
2729

app/build.gradle

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ android {
2323
}
2424

2525
dependencies {
26-
implementation fileTree(dir: 'libs', include: ['*.jar'])
27-
implementation"org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
26+
implementation fileTree(include: ['*.jar'], dir: 'libs')
27+
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
2828
implementation 'com.android.support:appcompat-v7:28.0.0-rc01'
2929
testImplementation 'junit:junit:4.12'
3030
androidTestImplementation 'com.android.support.test:runner:1.0.2'
3131
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
3232
implementation project(path: ':analytics')
33-
compile project(path: ':kit-answers')
34-
compile project(path: ':kit-firebase')
33+
implementation project(path: ':kit-answers')
34+
implementation project(path: ':kit-firebase')
35+
implementation project(':kit-flurry')
36+
implementation project(':kit-mixpanel')
3537
}

app/src/main/java/com/sofakingforever/example/App.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import com.sofakingforever.analytics.kits.answers.AnswersDispatcherImpl
88
import com.sofakingforever.analytics.kits.firebase.FirebaseDispatcherImpl
99
import com.sofakingforever.example.custom.CustomDispatcher
1010
import com.sofakingforever.analytics.kits.logger.LoggerDispatcherImpl
11+
import com.sofakingforever.analytics.kits.mixpanel.MixPanelDispatcherImpl
1112

1213
class App : Application() {
1314

@@ -16,13 +17,16 @@ class App : Application() {
1617
override fun onCreate() {
1718
super.onCreate()
1819

20+
1921
// init analytics property. this is in charge of tracking all events
2022
analytics = Analytics(this,
2123
CustomDispatcher(init = true),
2224
LoggerDispatcherImpl(init = true),
2325
FirebaseDispatcherImpl(init = true),
26+
MixPanelDispatcherImpl(init = true, projectToken = "TOKEN"),
2427
AnswersDispatcherImpl(init = true)
2528

29+
2630
// if you're using crashlytics, or any other fabric kit in addition to Answers
2731
// AnswersDispatcherImpl(init = true, Answers(), Crashlytics())
2832
)

app/src/main/java/com/sofakingforever/example/MainActivity.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sofakingforever.example
22

33
import android.os.Bundle
4+
import com.sofakingforever.analytics.kits.answers.AnswersDispatcherImpl
45
import com.sofakingforever.analytics.kits.answers.AnswersKit
56
import com.sofakingforever.example.events.EventPerKit
67
import com.sofakingforever.example.events.MainContentView
@@ -42,14 +43,20 @@ class MainActivity : BaseActivity() {
4243

4344
// don't track event on first click
4445
if (isFirstClick) {
46+
// for any implementation on Kit
4547
analytics.setKitEnabled(AnswersKit.instance, false)
48+
49+
// for specific implementation of Dispatcher
50+
analytics.setDispatcherEnabled(AnswersDispatcherImpl.DispatcherName, false)
4651
}
4752

4853
analytics.track(ParameterizedEvent(isFirstClick, System.currentTimeMillis()))
4954

5055
// but turn in back on for later
5156
if (isFirstClick) {
5257
analytics.setKitEnabled(AnswersKit.instance, true)
58+
59+
analytics.setDispatcherEnabled(AnswersDispatcherImpl.DispatcherName, true)
5360
}
5461

5562
isFirstClick = false

app/src/main/java/com/sofakingforever/example/custom/CustomDispatcher.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import com.sofakingforever.analytics.events.SetUserProperty
1313
*/
1414
class CustomDispatcher(override val init: Boolean) : AnalyticsDispatcher {
1515

16+
override val dispatcherName: String = "CustomEmptyDispatcher"
1617

1718
constructor() : this(true)
1819

kit-answers/src/main/java/com/sofakingforever/analytics/kits/answers/AnswersDispatcherImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import io.fabric.sdk.android.Kit
1212
*/
1313
class AnswersDispatcherImpl(override val init: Boolean, val fabricKits: Kit<*> = Answers()) : AnalyticsDispatcher {
1414

15+
override val dispatcherName: String = DispatcherName
16+
1517
override var enabled: Boolean = true
1618

1719
override val kit = AnswersKit.instance
@@ -68,5 +70,8 @@ class AnswersDispatcherImpl(override val init: Boolean, val fabricKits: Kit<*> =
6870
return com.crashlytics.android.answers.InviteEvent().putMethod(this.getInviteMethod()).putCustomAttribute("shareVia", this.shareVia)
6971
}
7072

73+
companion object {
74+
const val DispatcherName = "DefaultAnswersDispatcher"
75+
}
7176
}
7277

kit-firebase/src/main/java/com/sofakingforever/analytics/kits/firebase/FirebaseDispatcherImpl.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import com.sofakingforever.analytics.events.SetUserProperty
1111

1212
class FirebaseDispatcherImpl(override val init: Boolean) : AnalyticsDispatcher {
1313

14+
override val dispatcherName: String = DispatcherName
15+
1416
constructor() : this(true)
1517

1618
override val kit = FirebaseKit.instance
@@ -84,5 +86,8 @@ class FirebaseDispatcherImpl(override val init: Boolean) : AnalyticsDispatcher {
8486
return bundle
8587
}
8688

89+
companion object {
90+
const val DispatcherName = "DefaultFirebaseDispatcher"
91+
}
8792

8893
}

kit-flurry/src/main/java/com/sofakingforever/analytics/kits/flurry/FlurryDispatcherImpl.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import com.sofakingforever.analytics.events.SetUserProperty
1010

1111
class FlurryDispatcherImpl(val apiKey: String) : AnalyticsDispatcher {
1212

13+
override val dispatcherName: String = DispatcherName
14+
1315
override val init: Boolean = true
1416

1517
override var enabled: Boolean = true
@@ -63,4 +65,9 @@ class FlurryDispatcherImpl(val apiKey: String) : AnalyticsDispatcher {
6365
return map
6466
}
6567

68+
69+
companion object {
70+
const val DispatcherName = "DefaultFlurryDispatcher"
71+
}
72+
6673
}

0 commit comments

Comments
 (0)