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

Introduction to firebase (Basic features, datab...

Introduction to firebase (Basic features, database profiler and cloud functions)

Slides used in "introduction to firebase - part 2" meetup
(https://www.meetup.com/Pune-Mobile-Developers/events/239689155/ ) by Pune Mobile Developers

Kaushal Dhruw

May 14, 2017
Tweet

More Decks by Kaushal Dhruw

Other Decks in Programming

Transcript

  1. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved.

    Firebase Introduction part 2 Kaushal Dhruw
  2. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 2 Agenda •  The problem / use case •  The “without-firebase” approach •  Firebase Basics –  What is it? –  Features –  What’s new? •  The Firebase approach •  Boost performance using database profiler •  Go server-less with Cloud functions
  3. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 3 The Use-case •  I want to develop a collaborative photo sharing app. •  I should be able to save photos and details on cloud. •  Users should be able to login via social logins, comment, like and share. •  New picture notification via push message. •  I want to sanitize data before saving into database. –  e.g. change crazy to lovely, stupid to wonderful etc.
  4. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 4 “without firebase” approach We know the use cases, lets develop for one client…
  5. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 5 Building the client •  Create social / email login •  Create layout for displaying shared pictures, and provision for like / share / comment. •  Handle caching / connectivity. •  Upload and fetch images from cloud
  6. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 6 Building the backend •  Handle user login •  Create a storage bucket. •  Create REST endpoints (IaaS, PaaS, M/BaaS). •  Integrate push notification •  Make it scalable M/BaaS is an obvious choice for quick development
  7. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 7 BaaSes provide subset of:
  8. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 8 Let’s see how firebase helps
  9. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 9 What Is Firebase •  A complete BaaS solution that includes –  Real time JSON database –  Analytics –  Cloud Functions –  Hosting –  Cloud storage –  Cloud messaging –  And more
  10. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 10 Enter The All New Firebase
  11. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 11 The free feature set
  12. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 12 Real Time Database •  Unlike RDBMS, data is stored as JSON. It is no-SQL JSON database. •  What makes it real time it its ability to notify listeners of any change in data. •  Whenever any change is made in JSON database structure, the firebase SDK notifies the listeners. •  So you can forget about REST API calls, connectivity check, 3rd party libraries and polling.
  13. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 13 Core Magic Of Firebase
  14. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 14 Saving Data In Firebase •  Get database reference (base node) –  DatabaseReference mDBRef = FirebaseDatabase.getInstance().getReference() •  Point it to the right JSON node –  mDBRef = mDBRef.child(“mydb”).child(“table1”); •  Set the value at the pointed node –  mDBRef.child(‘row1’).setValue(myPOJO); •  Or push the value to create a unique key and set the value –  mDBRef.push().setValue(myPOJO);
  15. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 15 View Your Saved Data •  Log on to https://firebase.google.com. •  Go to console and select your project. •  Hit database and select data tab
  16. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 16 Retrieving Data •  Data is retrieved via callbacks listeners. •  There are mainly 2 types of listeners –  ValueEventListener – get entire child structure. –  ChildEventListener – get only the child that got changed / added or deleted. •  Attach these listeners to Database reference we saw earlier. •  Both of these listeners are called once, so app can get the data and prepare UI
  17. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 17 Pagination •  Create a Query object or keep using DatabaseReference. Query is super class of DatabaseReference class. •  Set orderBy some child key (and filter if needed) •  Set limits (startAt, limit etc.) •  Appropriate callback will be called when operation is complete.
  18. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 18 Pricing
  19. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 19 Firebase Authentication How long would it take you to develop this???
  20. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 20 Firebase Authentication Integrate easily with popular identity providers like google, twitter, facebook and more
  21. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 21 Firebase Storage •  Store image, audio, video and other content in cloud easily without worrying about the network quality. •  Firebase adds Google security to file uploads and downloads. •  Backed by Google cloud storage. •  Petabyte scalability available if your app goes viral.
  22. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 22 Upload Files To Firebase •  Get Storage reference –  storage = FirebaseStorage.getInstance().getReferenceFromUrl(‘gs:<bucket>’); –  storage = storage.child(‘myimages/user1234pic.jpg’); •  Easily change reference. –  storage.getParent(), getRoot(), getPath(), getName(), getBucket() etc. •  Upload from memory, stream or from local storage –  storage.putBytes(imageData); // as byte array. –  storage.putStream(stream); // as input stream –  Storage.putFile(fileURI): // Uri of the local file to be uploaded
  23. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 23 Download Files From Firebase •  Download to a local file –  File localFile = File.createTempFile(‘mefile’,’jpg’); –  storage.getFile(localFile).addOnSuccessListener(…); •  Download to memory –  Final long ONE_MEG = 1024*1024; –  storage.getBytes(ONE_MEG).addOnSuccessListener(new OnSuccessListener<byte[]>() { •  Public void onSuccess(bytes[] bytes){ } –  } );
  24. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 24 Pricing
  25. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 25 Crash Reporting •  Monitor fatal and non-fatal errors. •  Errors are grouped into clusters of similar stack traces. •  Find bug cause easily - Report consists of stack trace, device characteristics, performance etc. •  Enable email alerts to be notified of crashes in real time. •  Integrate with analytics to find order of events that caused the crash. •  ALL WITH 0 LINES OF CODE (not even initialization).
  26. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 26 Implement Crash Reporting •  Connect your app with firebase console. •  Add Gradle dependency. •  Add custom logs wherever required (optional). –  FirebaseCrash.log(“SQLite syntax error”); •  Upload mapping file for pro-guarded apps to view actual stacktrace.
  27. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 27 Firebase test lab for android •  Cloud based infrastructure for testing android apps. •  Test across variety of real devices and configurations. •  Test results include logs, videos and screenshots. •  Integrate with android studio and CI easily.
  28. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 28 Pricing
  29. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 29 Firebase Cloud Messaging •  It is a cross-platform messaging solution that reliably delivers messages at no cost. •  Send notifications that are displayed to your user. Or send data messages which can be consumed by application code. •  Distribute messages to your client app in any of three ways — to single devices, to groups of devices, or to devices subscribed to topics (from firebase console). •  Send acknowledgments from devices back to your server over FCM’s reliable and battery-efficient connection channel. •  95% of the messages delivered in under 250 milliseconds.
  30. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 30 FCM message structure { "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...", "notification" : { "body" : "great match!", "title" : "Portugal vs. Denmark", "icon" : "myicon" }, "data" : { ”nick" : "Mario", ”room" : "PortugalVSDenmark" } }
  31. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 31 Migrating from GCM •  In the Firebase console, select Import Google Project. •  All the permissions required by FCM are now added automatically by library. •  com.google.android.gms.gcm.GcmReceiver is already with FCM added automatically. No need to add in manifest. •  Remove registration. •  GcmPubSub methods have been integrated and simplified in the FirebaseMessaging class.
  32. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 33 Building the client •  Create social / email login – Use firebase-auth SDK for client. •  Create layout for displaying shared pictures, and provision for like / share / comment. •  Handle caching / connectivity – handled by firebase. •  Upload and fetch images from cloud – use firebase storage sdk.
  33. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 34 Building the backend •  Handle user login •  Create a storage bucket. •  Create REST endpoints. •  Integrate push notification •  Make it scalable Handled by firebase
  34. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 35 Of course all of these covered
  35. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 36 Integrate SDK in other clients
  36. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 37 Android app walkthrough
  37. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved.

    38 Measuring Database performance with profiler
  38. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 39 Database profiler •  Firebase Real-time database gives no insights about performance by default. •  Firebase CLI’s built in profiler is handy tool for measuring performance. •  Install and initialize latest version of firebase CLI and start profiling with a single command: –  firebase database:profile (optional --raw) •  This aggregates DB operations into a summary table broken down into: speed, bandwidth and unindexed queries.
  39. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 40 DB Profiler: Read Speed
  40. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 41 DB Profiler: Write Speed
  41. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 42 DB Profiler: Broadcast Speed
  42. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 43 DB Profiler: Bandwidth
  43. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 44 DB Profiler: Bandwidth
  44. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 45 DB Profiler: Unindexed Queries Android logs: Using an unspecified index. Consider adding '".indexOn": "dateTaken"' at photos Using an unspecified index. Consider adding '".indexOn": "likedById"' at likes Using an unspecified index. Consider adding '".indexOn": "ar5factId"' at comments Using an unspecified index. Consider adding '".indexOn": "ar5factId"' at likes
  45. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 46 Adding suggested indexes
  46. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 47 Resulting Performance
  47. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved.

    48 Cloud functions (Beta) – go serverless
  48. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 49 What are cloud functions ? •  Glue between firebase and cloud services. •  It is a piece of JavaScript code stored on Google cloud that runs in a managed node.js environment. •  No need to manage / scale. •  Extend firebase features with cloud functions without having to think about servers – “go server-less”
  49. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 50 Key Capabilities •  Real-time database triggers. –  Sanitize data •  Firebase authentication triggers. –  Send welcome email •  Firebase analytics triggers. –  Send a coupon after successful purchase •  Cloud storage triggers. –  Create and store thumbnails •  Cloud Pub/Sub triggers. –  Log messages published for a topic •  HTTP Triggers. –  Rest End points that can be triggered form client
  50. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 51 Setting up cloud functions •  Install node.js and npm (https://nodejs.org/) •  Install latest firebase CLI –  npm install -g firebase-tools •  Log in to firebase –  firebase login •  Initiate firebase project directory –  firebase init (pick only functions. Next slide) •  View other command reference here: –  https://firebase.google.com/docs/cli/
  51. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 52
  52. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 53
  53. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 54 After firebase project directory initialization with functions What gets created: •  functions/package.json - used by node to describe the project. All dependencies goes here. •  functions/node_modules - This is where npm keeps all its dependencies. •  functions/index.js - Entry point for defining all of the cloud functions.
  54. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 55 HTTP triggered cloud function
  55. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 56 Deploy cloud functions Using firebase CLI the following can be deployed: •  New releases of firebase hosting sites •  New or existing cloud functions •  Real-time database rules •  Cloud storage rules Deploy : •  firebase deploy (full deploy) •  firebase deploy –-only functions/ hosting/database/storage (partial deploy)
  56. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 57 Successful deployment
  57. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 58 Database triggered CF. •  Use-case 1: Remove inappropriate displayable content from comments section of the app. •  Use-case 2: Send notifications to app users when a new element is created (new follower / new Pic) •  Either write duplicate logic in all the clients, OR have it in one place and change it without having to publish app updates.
  58. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 59 Sanitize database input text
  59. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 60 Sanitize database input text
  60. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 61 Send new follower notification
  61. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 62 Send new pic notification
  62. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 63 Send new pic notification
  63. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 64 Why return from cloud function •  If your cloud function is doing something asynchronous, you must return a promise for the task to complete. •  Updating database is asynchronous, so we return a promise. •  A Promise object is used for asynchronous computations. A Promise represents a value which may be available now, or in the future, or never.
  64. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 65 JavaScript promise
  65. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 66 JavaScript continued… •  Use Promise.all(…) to return a single promise for multiple promisses. This promise succeeds when all promises have succeeded. •  For any work after promise has been fulfilled use Promise.prototype.then(onFulfilled, onRejected) function. •  It is usually good practice to chain promises for readability.
  66. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 67 Chaining promises
  67. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 68 Storage triggered CF.
  68. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 69 Storage triggered CF.
  69. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 70 Firebase Auth Triggered CF.
  70. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 71 Analytics triggered CF.
  71. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 72 Pricing
  72. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 73 Some good resources •  firebase youtube channel for fire casts. •  Cloud function sample projects. •  Firebase blog. •  Laurence Moroney blog. •  Official guide getting started. •  Join the firebase slack community https://firebase-community.slack.com/
  73. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 74 Join the discussion on slack •  Pune mobile developers slack group: https://pune-mobile- developer.slack.com •  Request an invite here: https://goo.gl/TERdGK
  74. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 75 Thank you Any ques5ons? @drulabs: twi.er / github Source for Vividity: hZps://goo.gl/8D5aUF Source for SyncroEdit: hZps://goo.gl/BLElI8
  75. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 76 Backup slides
  76. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 77 Next meetup suggestions •  What’s new in android O •  Protocol oriented programming •  Progressive web apps •  React Native •  Cross-platform game development using unity3d •  Android ndk
  77. Copyright © 2016 Talen5ca So8ware (I) Pvt Ltd. All rights

    reserved. Copyright ©2016 Talen5ca So8ware (I) Pvt Ltd. All rights reserved. 78 App Screens