Slide 1

Slide 1 text

Laurence de Villers +LaurencedeVillers THE BIGGEST ANNOUNCEMENT OF I/O

Slide 2

Slide 2 text

Daydream ALLO DUO Instant APP Solid

Slide 3

Slide 3 text

Coming in Fall 2016

Slide 4

Slide 4 text

30% of the conferences of Google I/O was about

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

No content

Slide 9

Slide 9 text

Cost = 5$ per hour per real device

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Confidential © 2016 Busbud Inc. How we used Firebase to ship Busbud mobile app features 10x Faster

Slide 12

Slide 12 text

Confidential © 2016 Busbud Inc. Earlier access before Google I/O to Firebase “When Busbud got access to Firebase, we were immediately impressed by the loads of features and services to play with. We were literally grinning like kids in a candy store! And with a simplified SDK and a turnkey Console, these new features and services work even better together!”

Slide 13

Slide 13 text

Confidential © 2016 Busbud Inc. Feature at Google I/O

Slide 14

Slide 14 text

Confidential © 2016 Busbud Inc. Advantages Takeaways Takeaway #1: The integrated approach used in Firebase helps you quickly assemble new functionality within your apps with minimal engineering work. Takeaway #2: Firebase lets you focus on solving more of your customers’ problems. Takeaway #3: A unified Firebase Analytics lets you make smart, data-driven decisions.

Slide 15

Slide 15 text

Confidential © 2016 Busbud Inc. Tools and features use in Busbud application

Slide 16

Slide 16 text

Confidential © 2016 Busbud Inc. Base configuration Simple :) Gradle Root Level Gradle Module Level

Slide 17

Slide 17 text

Confidential © 2016 Busbud Inc. Crash Reporting Fatal Crash Just need to add this: com.google.firebase:firebase-crash:9.x.x Non-Fatal Crash FirebaseCrash.log("Cart creation exception catched"); FirebaseCrash.report(throwable); Log is use to have more context about this non-fatal crash.

Slide 18

Slide 18 text

Confidential © 2016 Busbud Inc. Analytics Basic tracking: com.google.firebase:firebase-measurement:9.x.x Custom Data: FirebaseAnalytics.getInstance(context).logEvent (String evenName, Bundle properties) Note: The event can be stored and queried in BigQuery

Slide 19

Slide 19 text

Confidential © 2016 Busbud Inc. Analytics Quick tip Quick tip, use different gradle flavor Firebase configuration is based on the package name and signing SHA-1, but several apps can cohabitate easily within the same Firebase project. Make sure to differentiate between features that are shared within the same project (FCM, Remote Config) and ones that are split between apps (Analytics, Crash).

Slide 20

Slide 20 text

Confidential © 2016 Busbud Inc. Remote Config This is the feature key to experiment within your app. Ship faster with less risk.

Slide 21

Slide 21 text

Confidential © 2016 Busbud Inc. Remote Config Apply conditions on criteria You can apply conditions on those configuration to distribute different values depending on many criteria: ● Countries ● Languages ● Package names ● Random % of users ● And more

Slide 22

Slide 22 text

Confidential © 2016 Busbud Inc. Remote Config Code FirebaseRemoteConfig firebaseRemoteConfig = FirebaseRemoteConfig.getInstance(); //Enabling developer mode to get more request per hour FirebaseRemoteConfigSettings configSettings = new FirebaseRemoteConfigSettings.Builder() .setDeveloperModeEnabled(BuildConfig.DEBUG) .build(); firebaseRemoteConfig.setConfigSettings(configSettings); compile 'com.google.firebase:firebase-config:9.x.x'

Slide 23

Slide 23 text

Confidential © 2016 Busbud Inc. Remote Config Code //Fetching data from the config. firebaseRemoteConfig.fetch(cacheExpiration) .addOnSuccessListener(aVoid -> { firebaseRemoteConfig.activateFetched(); long version = firebaseRemoteConfig.getLong(Constants.RemoteConfigKeys.ANDROID_VERSION_CODE_MIN); mPrefs.edit() .putLong(SharedPreferences.Version.VERSION_CODE_MIN, version) .apply(); }) .addOnFailureListener(throwable -> { if (BuildConfig.IS_LOG_DEBUG) { Log.d(LOG_TAG, "Fetch Failed"); } });

Slide 24

Slide 24 text

Confidential © 2016 Busbud Inc. Push Notifications We were able to send, receive and see push notification in 3 minutes ! Simple Notification: com.google.firebase:firebase-messaging:9.0.2 ● FCM allows many levels of customization: ○ You can use HTTP/XMPP request in the SDK

Slide 25

Slide 25 text

Confidential © 2016 Busbud Inc. Push Notifications Can customize data with a custom payload, subscribe to topics and send notification: { "to": "/topics/debug_9q8yyk_9q5ctr", "data": { "bb_type": "new_route", "bb_from": "9q8yyk", "bb_to": "9q5ctr" } }

Slide 26

Slide 26 text

Confidential © 2016 Busbud Inc. Realtime Database Realtime Database is the perfect place to experiment when you need to store or retrieve static data from the network. You can store JSON files that are synced to your device so they remain available even when offline. You can upload data from the app to the DB. All the data is stored in JSON format.

Slide 27

Slide 27 text

Confidential © 2016 Busbud Inc. TestLabs TestLabs is not a new feature, but Firebase provides a nice console to browse your tests results. You can run the test from Android Studio. You can see the logs and video of the test sessions afterwards.

Slide 28

Slide 28 text

Confidential © 2016 Busbud Inc. Firebase: more efficient mobile development for all! The launch of Firebase is a welcome addition to the mobile development community. Android, iOS and Javascript SDK. After only a few months working with Google Firebase, we successfully shipped high quality features much faster than we expected— sometimes 10x faster than what we had planned!

Slide 29

Slide 29 text

Confidential © 2016 Busbud Inc. Questions ?

Slide 30

Slide 30 text

Confidential © 2016 Busbud Inc.