Cvičenie 12 - Cloudové služby a zdieľané úložiska dát 1

Cieľom dvanásteho cvičenia je ozrejmiť si prácu so službou Firebase, autentifikáciou používateľa a Storage úložiskom dát.

Google Firebase

Kombinuje v sebe množstvo užitočných funkcií a nástrojov, ktoré pomáhajú vyvíjať, testovať (virtuálne prostredie Test Lab) a vylepšovať aplikácie (Android, iOS, Web).
Obsahuje prepracovanú analytiku, hosting, úložisko (storage), real time databázu a nástroje, ktoré zjednodušujú prihlasovanie používateľov a crash reporting.
Analytické nástroje vo Firebase ponukajú okrem informácií v realnom čase, aj prístup k množstvu dát popisujúcich používateľov a ich interakciu s aplikáciou.

Integrácia služby Firebase

  • V prvom kroku vytvoríme nový projekt na stránke firebase.google.com/
  • Následne registrujeme našu aplikáciu na tabe: Project Overview -> Ikona Androidu, kde postupujeme podľa návodu.
  • V ďalšom kroku stiahneme konfiguračný súbor google-services.json a uložíme ho do súboru app
  • Pridáme závislosti do Gradle súboru projektu (project-level)
  • buildscript{
        repositories {
            google()
            mavenCentral()
        }
        dependencies {
            classpath 'com.google.gms:google-services:4.3.14'
        }              
    }

  • Rovnako pridáme závislosti do Gradle súboru aplikácie (app-level)
  • plugins{
        id 'com.android.application'
        id 'com.google.gms.google-services'
    }
    
    ...
    
    dependencies {
        implementation platform('com.google.firebase:firebase-bom:31.1.0')
        implementation 'com.google.firebase:firebase-analytics'
        ...
    }              
    

  • Následne stlačíme Continue to console a skontrolujeme správnosť implementácie.
  • V prípade ak vidíme logy z aplikácie priamo v konzole Firebasu - všetko je správne :)
  • Firebase - Crashlytics

    Umožňuje detailný crash reporting z aplikácií na zariadeniach používateľov.

  • V prvom kroku prejdeme v konzole Firebasu na tab Crashlytics a stlačíme tlačidlo Enable Crashlytics
  • Pridáme závislosti do Gradle súboru projektu (project-level)
  • dependencies {
        ...
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
    }

  • Následne pridáme závislosť do Gradle súboru aplikácie (app-level)
  • plugins{
      ...
      id 'com.google.firebase.crashlytics'
    }
    
    ...
    
    dependencies {
        implementation 'com.google.firebase:firebase-crashlytics'
        ...
    }              
    

  • Otestujeme správnosť implementácie
  • Firebase Authentication

    Umožňuje bezpečné prihlasovanie používateľov, verifikáciu emailovej adresy a obnovenie hesla.
    Podporuje prihlasovanie prostredníctvom vlastného emailu/hesla, alebo prostredníctvom Google, Twitter, GitHub atď.

  • V prvom kroku prejdeme na tab Authentication vo Firebase konzole a klikneme na tlačidlo Get started
  • Následne vyberieme Native Providers -> Email/Password -> Enable -> Save
  • Pridáme závislosť do Gradle súboru aplikácie (app-level)
  • dependencies {
        implementation 'com.google.firebase:firebase-auth'
        ...
    }              
        

  • Pripravíme základný layout
  • Upravíme onCreate()
  • Následne vytvoríme metódu signUp()
  • Podobne môžeme postupovať aj pri vytváraní metódy signIn()
  • Ak chceme pristupovať k údajom prihlaseného používateľa, stačí zavolať FirebaseAuth.getInstance().getCurrentUser();
  • V novej aktivite môže implementácia vyzerať napríklad takto:
  • V poslednom kroku skontrolujeme správnosť našej implementácie vo Firebase konzole
  • Firebase Storage

    Slúži predovšetkým ako úložisko pre interaktíny obsah (obrázky, zvuky, videa) a dopĺňa textové databázy (Realtime a Firestore)
    Ponúka offline synchronizáciu v prípade, keď používateľ bude bez siete (automatická synchronizácia po pripojení).

  • V prvom kroku prejdeme na tab Storage vo Firebase konzole a klikneme na tlačidlo Get started
  • Pridáme závislosť do Gradle súboru aplikácie (app-level)
  • dependencies {
        implementation 'com.google.firebase:firebase-storage'
        ...
    }    

  • Ošetríme výber obrázka z galérie napríklad takto:
  • A spracujeme odpoveď
  • saveImageToStorage() môže vyzerať napríklad takto:
  • Avšak bude vhodnejšie ak ju zavoláme priamo v odpovedi úspešnej registrácie a odkomentujeme user.getEmail() v predošlej ukážke
  • K súboru môžeme následne pristupovať v inej aktivite napríklad takto:
  • Pre načítanie obrázka môžete použiť napríklad Glide
  • implementation 'com.github.bumptech.glide:glide:4.12.0'

    © 2023 Tomáš Adam