Android
2019-05-22
Kod wykorzystany w tym artykule pochodzi z mojej przykładowej aplikacji MVP. Repozytorium można znaleźć tutaj:
Github
Kiedy zaczynałem moją pracę z Firebase, główny nacisk położony był na bazę danych czasu rzeczywistego (Realtime Database).
Obecnie Firebase zarządzane przez Google to platforma praktycznie do wszystkiego. Od śledzenia błędów w aplikacjach po testowanie w chmurze na wirtualnych urządzeniach.
Polecam zapoznać się z tymi funkcjami. Bardzo dużo można zautomatyzować i scentralizować.
https://firebase.google.com/
Dowolna usługa Firebase może zostać dodana na różne platformy. Ja z oczywistych względów pokażę implementację na Android.
Jeżeli pracujemy w Android Studio to cała robota może zostać wykonana za nas. Wystarczy wejść w Tools -> Firebase
Tam wybrać Realtime Database. Prawdopodobnie nie mamy jeszcze utworzonego żadnego projektu więc klikamy Connect to Firebase i tworzymy nowy.
Po stworzeniu klikamy na Add the Realtime Database to your app i akceptujemy.
Jeżeli wciąż jednak chcesz przejść przez konfigurację ręcznie to cały poradnik znajduje się tutaj:
Add Firebase to your Android project
Tak jak w innych podejściach obiektem, od którego wychodzimy jest połączenie.
Na obiekcie database wywołujemy operacje związane z samym projektem, a dokładniej bazą.
Z kolei na myRef operujemy na danych za pomocą różnych funkcji.
Jeżeli chodzi o referencje to najczęściej odwołujemy się do głównych gałęzi drzewa.
W Firebase bezpieczeństwo regulowane jest za pomocą reguł.
Określają one dostęp do odczytu i zapisu danych przez autoryzowanych i nieautoryzowanych użytkowników.
Więcej o regułach możesz poczytać tutaj:
Understand Firebase Realtime Database Rules
W poniższym przykładzie opiszę schemat postępowania w celu uzyskania danych z bazy.
Na początku tworzę refencję do danych i listę na otrzymane informacje.
Jako, że jest to baza czasu rzeczywistego to musimy zadeklarować jakiś nasłuch zmian (listener). Ja w tym przypadku deklaruję addValueEventListener. Dodatkowo porządkowany jest on przez pole index. Takie podejście pozwala na ręczne sortowanie.
W onCancelled obsługujemy błędy, a w onDataChange pracujemy z otrzymanym rezultatem.
Iterując po wszystkich dzieciach (children) tworzę obiekty data class Topic. Jeżeli pola w bazie w pełni pokrywają się z polami w klasie nie musimy wyciągać pojedynczo danych.
Data class w Kotlinie
Na sam koniec zwracam listę za pomocą funkcji onSuccess. Uwaga: Ta funkcja jest częścią projektu MVPWithFirebase i nie jest dostępna z biblioteki Firebase.
Dziękuję Ci za przeczytanie tego materiału 😀 Jeżeli spodobało Ci się to o czym piszę, możesz sprawdzić więcej materiałów na blogu lub udostępnić znajomym. Będzie mi bardzo miło 😊
Jestem młodym programistą, który dumnie dzierży wiele pasji takich jak bieganie czy piwowarstwo domowe. Jedną z nich jest także programowanie i o tym właśnie zamierzam tutaj pisać.
Zachęcam Cię do odwiedzenia mojej strony na Google Play store i sprawdzenia wszystkich moich aplikacji.