Skip to content

Instantly share code, notes, and snippets.

@adrianhall
adrianhall / .eslintrc.js
Last active April 29, 2024 15:01
A sample .eslintrc file
var OFF = 0, WARN = 1, ERROR = 2;
module.exports = exports = {
"env": {
"es6": true
},
"ecmaFeatures": {
// env=es6 doesn't include modules, which we are using
"modules": true
@adrianhall
adrianhall / build.gradle
Created March 23, 2018 18:34
Build.gradle additions for Analytics
dependencies {
// Your other dependencies here
// AWS Mobile SDK for Android
implementation ('com.amazonaws:aws-android-sdk-mobile-client:2.6.+@aar') { transitive = true }
implementation 'com.amazonaws:aws-android-sdk-pinpoint:2.6.+'
}
@adrianhall
adrianhall / AndroidManifest.xml
Created March 23, 2018 18:36
Add Internet capabilities to your Android App
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
@adrianhall
adrianhall / MainActivity.kt
Last active March 23, 2018 18:38
Creates an Amazon Pinpoint client manager
AWSMobileClient.getInstance().initialize(this).execute()
pinpointManager = PinpointManager(
PinpointConfiguration(this,
AWSMobileClient.getInstance().credentialsProvider,
AWSMobileClient.getInstance().configuration)
)
pinpointManager?.apply {
it.sessionClient.startSession()
it.analyticsClient.submitEvents()
}
@adrianhall
adrianhall / MainActivity.kt
Created March 23, 2018 18:39
Record a custom event with Amazon Pinpoint
fab.setOnClickListener { view ->
Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
.setAction("Action", null).show()
pinpointManager?.let {
val event = it.analyticsClient.createEvent("click-fab")
it.analyticsClient.recordEvent(event)
it.analyticsClient.submitEvents()
}
}
@adrianhall
adrianhall / ContextExtensions.kt
Created March 23, 2018 18:40
Extension function to pull the connectivityManager from the context
package com.amazon.aws.mobile.samples.tasks.extensions
import android.content.Context
import android.net.ConnectivityManager
/**
* Extension method to return the connectivity manager, given a context
*/
fun Context.getConnectivityManager(): ConnectivityManager {
return applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
@adrianhall
adrianhall / AWSProvider.kt
Created March 23, 2018 18:41
AWS Provider Class for abstracting the Analytics Client
package com.amazon.aws.mobile.samples.tasks.providers
import android.content.Context
import com.amazonaws.auth.AWSCredentialsProvider
import com.amazonaws.mobile.client.AWSMobileClient
import com.amazonaws.mobile.config.AWSConfiguration
class AWSProvider {
companion object {
var instance: AWSMobileClient? = null
@adrianhall
adrianhall / AnalyticsClient.kt
Created March 23, 2018 18:44
Analytics Client base class
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
@adrianhall
adrianhall / MainActivity.kt
Created March 23, 2018 22:17
Updated the icon in the toolbar
override fun onResume() {
super.onResume()
// Determine the current auth state and place the right icon in the ImageView
if (AWSProvider.identityManager.isUserSignedIn)
mainToolbarLockIcon.setImageResource(R.drawable.ic_locked_24dp)
else
mainToolbarLockIcon.setImageResource(R.drawable.ic_unlocked_24dp)
mainToolbarLockIcon.isClickable = true
mainToolbarLockIcon.isFocusable = true
@adrianhall
adrianhall / MainActivity.kt
Created March 23, 2018 22:24
onClick handler for an authentication event
fun onLockClicked(caller: View) {
Log.d(TAG, "Lock clicked - caller=${caller.id}")
if (AWSProvider.identityManager.isUserSignedIn) {
AWSProvider.identityManager.signOut()
mainToolbarLockIcon.setImageResource(R.drawable.ic_unlocked_24dp)
this.toast("Signed out of Amazon Cognito")
} else {
val intent = Intent(this, AuthenticatorActivity::class.java)
startActivity(intent)
}