Skip to content

Instantly share code, notes, and snippets.

View amsterdatech's full-sized avatar
💭
I may be slow to respond.

William Gouvea amsterdatech

💭
I may be slow to respond.
View GitHub Profile
class App : Application() {
override fun onCreate() {
super.onCreate()
StrictMode.setThreadPolicy(
StrictMode.ThreadPolicy.Builder()
.detectAll()
.penaltyLog()
.penaltyDialog()
cclass AndroidLogTracker(private val context: Context) : Tracker {
private val TAG = this::class.java.simpleName
private fun tag(): String =
"${context.applicationInfo.name}:${context.applicationInfo.packageName}:$TAG"
override fun isAnalyticsEnabled(): Boolean {
Log.d(
TAG,
"${tag()} is enable ${BuildConfig.DEBUG}"
@amsterdatech
amsterdatech / AnalyticsModule.kt
Last active January 3, 2021 20:09
Koin Analytics Module
const val TRACKER_SAMPLE = "sample_tracker"
val analyticsModule = module {
single<Tracker>(named(TRACKER_SAMPLE)) { SampleTracker(androidApplication()) }
single<Analytics> { AnalyticsImpl(androidApplication(), mutableListOf(get(named(TRACKER_SAMPLE)))) }
}
// Code on your base fragment or base activity
val analytics: Analytics by inject()
interface CrashReporter : Tracker {
fun simulateCrash()
}
annotation class DslAnalytics
@DslAnalytics
open class EventBuilder(var name: String? = null) {
val data: MutableMap<String, String>? by lazy {
mutableMapOf<String, String>()
}
inline fun String.to(value: String) {
data?.let {
interface Trackable {
@EventName
val eventName: String
val properties: Map<String, String>?
}
sealed class Event : Trackable {
data class EventTrack(
@EventName override val eventName: String,
override val properties: Map<String, String>? = null
interface Tracker {
fun isAnalyticsEnabled(): Boolean
fun enableAnalytics(enabled: Boolean)
fun logLevel(logLevel: Int)
fun start()
@amsterdatech
amsterdatech / Analytics.kt
Last active January 18, 2021 21:05
Analytics interface
interface Analytics {
fun track(setup: EventBuilder.() -> Unit = {})
}
class AnalyticsImpl(private val trackers: MutableList<Tracker>) : Analytics {
init {
trackers.forEach {
if(it.isAnalyticsEnable()){
it.start()
@amsterdatech
amsterdatech / Analytics.kt
Last active January 18, 2021 20:53
Simple Analytics With Kotlin
interface Analytics {
fun track(setup: EventBuilder.() -> Unit = {})
}
class AnalyticsImpl(private val trackers: MutableList<Tracker>) : Analytics {
init {
trackers.forEach {
if(it.isAnalyticsEnable()){
it.start()
package com.actinarium.materialcue.analytics;
import android.app.Application;
import android.support.annotation.NonNull;
import android.util.Log;
import com.actinarium.materialcue.dto.Overlay;
import com.actinarium.materialcue.iab.PremiumStatus;
import com.actinarium.materialcue.iab.PremiumStatusChangeListener;
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;