Created
March 23, 2018 18:44
-
-
Save adrianhall/8e20e553d475f527c4e245bd2efa2af6 to your computer and use it in GitHub Desktop.
Analytics Client base class
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.amazon.aws.mobile.samples.tasks.providers | |
import android.content.BroadcastReceiver | |
import android.content.Context | |
import android.content.Intent | |
import android.content.IntentFilter | |
import android.net.ConnectivityManager | |
import com.amazon.aws.mobile.samples.tasks.extensions.getConnectivityManager | |
import com.amazonaws.mobileconnectors.pinpoint.PinpointConfiguration | |
import com.amazonaws.mobileconnectors.pinpoint.PinpointManager | |
import com.amazonaws.mobileconnectors.pinpoint.analytics.AnalyticsEvent | |
class AnalyticsClient { | |
companion object { | |
private lateinit var pinpointManager: PinpointManager | |
private var isConnected = true | |
fun initialize(context: Context) { | |
AWSProvider.initialize(context) // Will silently do nothing if already done | |
val config = PinpointConfiguration(context, AWSProvider.credentialsProvider, AWSProvider.configuration) | |
pinpointManager = PinpointManager(config) | |
// register a broadcast receiver to be called when the connection changes | |
val networkStateReceiver = object : BroadcastReceiver() { | |
override fun onReceive(_context: Context?, intent: Intent?) { | |
isConnected = _context?.getConnectivityManager()?.activeNetworkInfo != null | |
if (isConnected) | |
pinpointManager.analyticsClient.submitEvents() | |
} | |
} | |
context.registerReceiver(networkStateReceiver, IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)) | |
// Determine the current connectivity state | |
isConnected = context.getConnectivityManager().activeNetworkInfo != null | |
} | |
fun submitEventsIfConnected(submitEvents: Boolean = true) { | |
if (submitEvents && isConnected) | |
pinpointManager.analyticsClient.submitEvents() | |
} | |
fun startSession(submitEvents: Boolean = true) { | |
pinpointManager.sessionClient.startSession() | |
submitEventsIfConnected(submitEvents) | |
} | |
fun stopSession(submitEvents: Boolean = true) { | |
pinpointManager.sessionClient.startSession() | |
submitEventsIfConnected(submitEvents) | |
} | |
fun recordEvent(eventName: String, submitEvents: Boolean = true) { | |
recordEvent(pinpointManager.analyticsClient.createEvent(eventName)) | |
} | |
fun recordEvent(event: AnalyticsEvent, submitEvents: Boolean = true) { | |
pinpointManager.analyticsClient.recordEvent(event) | |
submitEventsIfConnected(submitEvents) | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment