Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Use multi Analytics and Crashlytic smothly

Use multi Analytics and Crashlytic smothly

fantasy

April 01, 2018
Tweet

More Decks by fantasy

Other Decks in Programming

Transcript

  1. Add GA to code Maybe look like this playBtn.setOnClickListener({ gaTracker.send(HitBuilders.EventBuilder()

    .setCategory("Action") .setAction("Play") .build()) }) Use factory pattern to refactor playBtn.setOnClickListener { GA.sendEvent(Events.clickPlayBtn()) }
  2. How to set Analytics Class class Analytics private constructor() {

    private val trackers = ArrayList<BaseTracker<Event>>() …... fun init(context: Application, isDebug: Boolean) { trackers.add(GATracker(context, isDebug)) trackers.add(FirebaseGATracker(context, isDebug)) trackers.add(FlurryTracker(context, isDebug)) trackers.add(AppCenterTracker(context, isDebug)) trackers.add(FbTracker(context, isDebug)) trackers.add(CrashlyticsTracker(context, isDebug)) } fun trackEvent(event: Event) { for (tracker in trackers) { tracker.trackEvent(event) }
  3. How to set Event open class Event(val screenName: String =

    "", @TrackerTarget val target: Long = TARGET_ALL, val params: ArrayMap<String, String> = ArrayMap()) companion object { ….. val CATEGORY = "CATEGORY" val ACTION = "ACTION" val LABEL = "LABEL"
  4. How to set Event(Const.) annotation class TrackerTarget const val TARGET_GA

    = 0b00000001L const val TARGET_CRASHLYTICS = 0b00000010L const val TARGET_FIREBASE_GA = 0b00000100L const val TARGET_FLURRY = 0b00001000L const val TARGET_APP_CENTER = 0b00010000L const val TARGET_FB_ANALYTIC = 0b00100000L const val TARGET_GA_CRASHLYTICS = TARGET_GA or TARGET_CRASHLYTICS const val TARGET_ALL = TARGET_GA or TARGET_CRASHLYTICS or TARGET_FIREBASE_GA or TARGET_FLURRY or TARGET_APP_CENTER or TARGET_FB_ANALYTIC
  5. How to set Events class Events { fun clickPlayBtn(): Event

    { val params: ArrayMap<String, String> = ArrayMap() params.put(Event.CATEGORY, Event.CATEGORY_HOME) params.put(Event.ACTION, Event.ACTION_PLAY) params.put(Event.LABEL, "song") return Event(params, TARGET_ALL) } fun clickBrowseBtn(): Event { val params: ArrayMap<String, String> = ArrayMap() params.put(Event.CATEGORY, Event.CATEGORY_HOME) params.put(Event.ACTION, Event.ACTION_BROWSE) params.put(Event.LABEL, "content") return Event(params, TARGET_FLURRY) } Set tracker taget
  6. How to set Tracker abstract class BaseTracker<T>(val context: Application, val

    isDebug: Boolean) { fun trackEvent(event: Event) { if (isOwnEvent(event.target) && acceptEvent(event)) { val transformedEvent = transformEvent(event) postEvent(transformedEvent) } } private fun isOwnEvent(@Event.Companion.TrackerTarget target: Long): Boolean{ return (target and getTrackerTarget()) === getTrackerTarget() } protected abstract fun getTrackerTarget():Long …...
  7. How to set Tracker(Const) class GATracker : BaseTracker<Event> { override

    fun getTrackerTarget(): Long { return TARGET_GA } override fun setupTracker(context: Application, isDebug: Boolean) { val analytics = GoogleAnalytics.getInstance(context) tracker = if (isDebug) analytics.newTracker(DEBUG_TOKEN) else analytics.newTracker(RELEASE_TOKEN) } …...
  8. Bouns Set event log to Firebase Crashlytics to analyse behavior

    before crash happening. trackers.add(CrashlyticsTracker(context, isDebug))
  9. Integration with Analytics events Use Firebase Analytics and Firebase Crashlytics

    together in the newest version with breadcrumbs feature.(4) trackers.add(CrashlyticsTracker(context, isDebug))