Jeśli jeszcze tego nie zrobiono, dodaj Firebase do projektu na Androida.
Tworzenie bazy danych
Przejdź do sekcji Realtime Database w Firebasekonsoli. Pojawi się prośba o wybranie dotychczasowego projektu Firebase. Postępuj zgodnie z procesem tworzenia bazy danych.
Wybierz tryb początkowy dla Firebase Security Rules:
- Tryb testowy
Dobre rozwiązanie na początek pracy z bibliotekami klienta mobilnego i internetowego, ale umożliwia każdemu odczytywanie i zastępowanie danych. Po przetestowaniu zapoznaj się z sekcją Omówienie reguł Bazy danych czasu rzeczywistego Firebase.
Aby rozpocząć korzystanie z pakietu SDK na potrzeby internetu, urządzeń Apple lub Androida, wybierz testmode.
- Tryb blokady
Odrzuca wszystkie odczyty i zapisy klientów mobilnych oraz internetowych. Uwierzytelnione serwery aplikacji nadal mogą uzyskiwać dostęp do bazy danych.
Wybierz lokalizację bazy danych.
W zależności od lokalizacji bazy danych adres URL nowej bazy danych będzie miał jedną z tych postaci:
(w przypadku baz danych wDATABASE_NAME.firebaseio.com
us-central1
) (w przypadku baz danych w innych lokalizacjach)DATABASE_NAME.REGION.firebasedatabase.app
Kliknij Gotowe.
Gdy włączysz Realtime Database, interfejs API zostanie też włączony w Cloud API Manager.
Dodawanie pakietu SDK Realtime Database do aplikacji
W pliku Gradle modułu (na poziomie aplikacji) (zwykle<project>/<app-module>/build.gradle.kts
lub <project>/<app-module>/build.gradle
) dodaj zależność z biblioteką Realtime Database na Androida. Zalecamy używanie
Firebase Android BoM
do kontrolowania wersji biblioteki.
dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.0.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życia BoM
Jeśli nie chcesz używać Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli w aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z 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.0") }
Skonfiguruj: Realtime Database Security Rules
Realtime Database udostępnia deklaratywny język reguł, który pozwala określać strukturę danych, sposób ich indeksowania oraz czas, w którym można je odczytywać i zapisywać.
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 funkcji pobierających zostaną zapisane jako elementy podrzędne tej lokalizacji.
Odczytywanie z bazy danych
Aby dane aplikacji były aktualizowane w czasie rzeczywistym, dodaj do utworzonego właśnie odwołania parametr
ValueEventListener
.
Metoda onDataChange()
w tej klasie jest wywoływana raz po dołączeniu odbiorcy i ponownie za każdym razem, gdy zmienią się dane, 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: skonfiguruj 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 opublikujesz aplikację, zapoznaj się z naszą listą kontrolną przed publikacją, aby upewnić się, że jest ona gotowa.
Aby mieć pewność, że tylko Twoje aplikacje mają dostęp do baz danych, włącz App Check.
Następne kroki
- Dowiedz się, jak strukturyzować dane na potrzeby Realtime Database
- Skalowanie danych w wielu instancjach bazy danych.
- Odczytywanie i zapisywanie danych
- Wyświetl bazę danych w Firebasekonsoli.