Łączenie aplikacji z Firebase

Dodaj Firebase do projektu aplikacji na Androida, jeśli nie korzystasz w nim jeszcze z tej usługi.

Tworzenie bazy danych

  1. W konsoli Firebase otwórz Bazy danych i miejsce na dane > Baza danych czasu rzeczywistego.

  2. Kliknij Utwórz bazę danych.

  3. Wybierz tryb początkowy dla Firebase Security Rules:

    Tryb testowy

    Dobry na początek pracy z bibliotekami klienta mobilnego i internetowego, ale umożliwia każdemu odczytywanie i nadpisywanie danych. Po zakończeniu testowania zapoznaj się z sekcją Zrozumienie reguł bazy danych czasu rzeczywistego Firebase.

    Aby rozpocząć korzystanie z pakietu SDK na potrzeby internetu, Apple lub Androida, wybierz tryb testowy.

    Tryb blokady

    Odrzuca wszystkie odczyty i zapisy od klientów mobilnych i internetowych. Uwierzytelnione serwery aplikacji nadal mogą uzyskiwać dostęp do bazy danych.

  4. Wybierz lokalizację bazy danych.

    W zależności od lokalizacji bazy danych, adres URL nowej bazy danych będzie miał jedną z tych postaci:

    • DATABASE_NAME.firebaseio.com (w przypadku baz danych w lokalizacji us-central1)

    • DATABASE_NAME.REGION.firebasedatabase.app (w przypadku baz danych w innych lokalizacjach)

  5. Kliknij Gotowe.

Gdy włączysz Realtime Database, włączy się też interfejs API w Menedżerze interfejsów Cloud API.

Dodawanie pakietu SDK Realtime Database do aplikacji

W pliku Gradle na poziomie modułu (aplikacji) (zwykle <project>/<app-module>/build.gradle.kts lub <project>/<app-module>/build.gradle), dodaj zależność od biblioteki Realtime Database na Androida. Zalecamy używanie Firebase Android BoM do kontrolowania obsługi wersji bibliotek.

dependencies {
    // Import the BoM for the Firebase platform
    implementation(platform("com.google.firebase:firebase-bom:34.12.0"))

    // Add the dependency for the Realtime Database library
    // When using the BoM, you don't specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-database")
}

Gdy korzystamy z Firebase Android BoM, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.

(Alternatywnie)  Dodaj zależności biblioteki Firebase bez używania BoM

Jeśli nie chcesz używać Firebase BoM, musisz określić wersję każdej biblioteki Firebase w wierszu zależności.

Pamiętaj, że jeśli w aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy używanie BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.

dependencies {
    // Add the dependency for the Realtime Database library
    // When NOT using the BoM, you must specify versions in Firebase library dependencies
    implementation("com.google.firebase:firebase-database:22.0.1")
}

Konfigurowanie Realtime Database Security Rules

Realtime Database udostępnia deklaratywny język reguł, który umożliwia określenie struktury danych, sposobu ich indeksowania oraz tego, kiedy można odczytywać i zapisywać dane.

Zapisywanie w bazie danych

Pobierz instancję bazy danych za pomocą getInstance() i odwołaj się do lokalizacji, w której chcesz zapisać dane.

Kotlin

// Write a message to the database
val database = Firebase.database
val myRef = database.getReference("message")

myRef.setValue("Hello, World!")

Java

// Write a message to the database
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("message");

myRef.setValue("Hello, World!");

W ten sposób możesz zapisywać w bazie danych różne typy danych, w tym obiekty Java. Gdy zapiszesz obiekt, odpowiedzi z dowolnych metod pobierających zostaną zapisane jako elementy podrzędne tej lokalizacji.

Odczytywanie z bazy danych

Aby dane aplikacji były aktualizowane w czasie rzeczywistym, dodaj ValueEventListener do utworzonego właśnie odniesienia.

Metoda onDataChange() w tej klasie jest wywoływana raz po dołączeniu detektora i ponownie za każdym razem, gdy dane się zmienią, w tym dane elementów podrzędnych.

Kotlin

// Read from the database
myRef.addValueEventListener(object : ValueEventListener {
    override fun onDataChange(dataSnapshot: DataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        val value = dataSnapshot.getValue<String>()
        Log.d(TAG, "Value is: $value")
    }

    override fun onCancelled(error: DatabaseError) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException())
    }
})

Java

// Read from the database
myRef.addValueEventListener(new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        // This method is called once with the initial value and again
        // whenever data at this location is updated.
        String value = dataSnapshot.getValue(String.class);
        Log.d(TAG, "Value is: " + value);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError error) {
        // Failed to read value
        Log.w(TAG, "Failed to read value.", error.toException());
    }
});

Opcjonalnie: konfigurowanie ProGuard

Jeśli używasz Firebase Realtime Database w aplikacji wraz z ProGuard, musisz zastanowić się, jak obiekty modelu będą serializowane i deserializowane po zaciemnieniu. Jeśli do odczytywania i zapisywania danych używasz DataSnapshot.getValue(Class) lub DatabaseReference.setValue(Object), musisz dodać reguły do pliku proguard-rules.pro:

    # Add this global rule
    -keepattributes Signature

    # This rule will properly ProGuard all the model classes in
    # the package com.yourcompany.models.
    # Modify this rule to fit the structure of your app.
    -keepclassmembers class com.yourcompany.models.** {
      *;
    }

Jeśli masz pytania lub problemy związane z ProGuard, odwiedź fora społeczności Guardsquare , aby uzyskać pomoc od eksperta.

Przygotowanie do uruchomienia

Zanim uruchomisz aplikację, zalecamy zapoznanie się z naszą listą kontrolną uruchomienia, aby upewnić się, że aplikacja jest gotowa.

Włącz App Check, aby mieć pewność, że tylko Twoje aplikacje mogą uzyskiwać dostęp do baz danych.

Następne kroki