Slide 1

Slide 1 text

Rosário P. Fernandes Firebase GDE @_rpfernandes A/B Testing Android apps with Firebase

Slide 2

Slide 2 text

Half screen photo slide if text is necessary About Me ● From Mozambique ● Firebase GDE ● Android Developer ● Organizer at GDG Maputo ● Writes technical blog posts ● Open Source Contributor ● Loves video games

Slide 3

Slide 3 text

Sign up for free Register for more

Slide 4

Slide 4 text

A/B Testing Why is it important?

Slide 5

Slide 5 text

Testing changes ● Co-Workers ● Friends ● Family ● Focused testing groups

Slide 6

Slide 6 text

Testing changes Make changes periodically? Sign up for free Register for more Register for free Week 1 Week 5 Week 3

Slide 7

Slide 7 text

A/B Testing What is it?

Slide 8

Slide 8 text

Testing changes A/B groups Sign up for free Register for more Register for free All users Group B Group A

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

Firebase Remote Config Simple key-value store that lives in the Cloud. {“key” : “value”}

Slide 11

Slide 11 text

// Import the Firebase BoM implementation platform('com.google.firebase:firebase-bom:26.1.0') // When using the BoM, you don't specify versions in Firebase library dependencies // Declare the dependency for the Firebase SDK for Remote Config implementation 'com.google.firebase:firebase-config-ktx' // Declare the dependency for the Firebase SDK for Google Analytics implementation 'com.google.firebase:firebase-analytics-ktx' Add Remote Config to your app

Slide 12

Slide 12 text

button_label Sign Up for Free button_color #0000FF // In Kotlin Firebase.remoteConfig.setDefaultsAsync(R.xml.default_values) // fetch values from the server remoteConfig.fetchAndActivate()

Slide 13

Slide 13 text

// On our Fragment/Activity val remoteConfig = Firebase.remoteConfig val label: String = remoteConfig.getString(“button_label”) val color: String = remoteConfig.getString(“button_color”) button.setText(label) button.setBackgroundColor(Color.parseColor(color))

Slide 14

Slide 14 text

Google Analytics for Firebase Track User Events

Slide 15

Slide 15 text

// On our Fragment/Activity button.setOnClickListener { Firebase.analytics.logEvent(“sign_up_started”) { // optional params here } } auth.setOnSignUpFinished { Firebase.analytics.logEvent(“sign_up_finished”) { // optional params here } }

Slide 16

Slide 16 text

Creating an Experiment from the Firebase Console

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

// Testing our variants // Get the installation token FirebaseInstallations.getInstance().getToken(false) .addOnSuccessListener { task -> if (task.isSuccessful) { Log.d(“ABtest”, “ID: ${task.result!!.token}”) // ijKJddsjasbdjBDJBjdaknsdjN } } // Enable Debug Mode // Dont use this in production val configSettings = remoteConfigSettings { minimumFetchIntervalInSeconds = 0 } Firebase.remoteConfig.setConfigSettingsAsync(configSettings)

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

Analyzing Results

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Useful links ● https://firebase.google.com/docs/remote-config/use-config-android ● https://firebase.google.com/docs/ab-testing/abtest-config ● https://firebase.google.com/docs/analytics/get-started?platform=android

Slide 38

Slide 38 text

Rosário P. Fernandes Firebase GDE @_rpfernandes Thank You!