Witam, potrzebuje stworzyć aplikację na androida która w tle będzie nasłuchiwać zmian w bazie danych i jeśli określony rekord w bazie się zmieni to ma wykonać się określone zdarzenie? Czy ktoś już coś podobnego robił? Może ktoś coś doradzi?
Z góry Dziękuje
Czy to już istniejący system i musi być MySQL? W bazach NoSQL jest to łatwiejsze.
MySQL nie posiada mechanizmu CDC więc musiałbyś użyć na początek rozwiązań typu Debezium albo Maxwell żeby pchać zmiany do kolejek i twoja aplikacja dostawała by zmiany z tych kolejek.
Jeżeli ilość zmian jest umiarkowana to inną opcją jest zrobienie takiej kolejki na bazie i uzupełniać ją trigerem z tabelki źródłowej. Tutaj niestety trzeba odpytywać regularnie z aplikacji o nowe rekordy.
System dopiero powstaje więc MySQL nie jest wymogiem. Ale zastanawiam się jeszcze czy robić to na bazie czy może w jakiś w inny sposób przekazywać informacje, bo w sumie chodzi o to aby wywołać jakieś zdarzenie z innego urządzenia/komputera/strony.
No to zabierasz się za temat od d**y strony, poczytaj tu: https://firebase.google.com/docs/cloud-messaging
W Firebase nie trzeba nawet używać messagingu, wystarczy baza Firestore, przy zmianie danych aplikacja mobilna otrzyma informację o zmianach. Tak jak pisałem, jeżeli zdecydujesz się na NoSQL to w Firebase jest to bardzo proste.
https://firebase.google.com/docs/firestore/query-data/listen
Tylko że wysłanie komunikatu FCM to zwykły prosty json wysłany POST-em, a do Firestore musisz mieć skonfigurowanego klienta i całą bazę trzymać w chmurze Google (wersja darmowa ma swoje ograniczenia). Jak zawsze, wszystko kwestia potrzeb konkretnego projektu
Przecież FCM też jest na cloudzie. W Firestore nic nie musisz konfigurować, połączenie i nasłuchiwanie to dwie linijki.
A gdybym zrezygnował z nasłuchiwania i poszedł w stronę wysyłania do Androida powiadomień. Ogólnie chciałbym ze strony internetowej wysłać do androida informacje? Jakie technologię można wykorzystać? Czy można to zrobić przez PHP?
Ja chyba wolał bym wykorzystać http? Chciałbym aby to wyglądało w następujący sposób:
Aplikacja na androidzie jest cały czas uruchomiona i wykonuje jakieś akcje gdy ze strony zostanie wysłany jakiś komunikat?
Po prostu nie chciał bym wykorzystywać do tego oprogramowania Google.
Ktoś ma inny pomysł jak to zrobić?
No to Firebase. Na telefonie korzystasz ze standardowych bibliotek Google. A na serwerze masz właśnie http, wysyłasz tylko POST-a z php, a w tym czasie telefon otrzymuje powiadomienie. Prościej się już nie da, na serwerze nie musisz mieć żadnego oprogramowania od Google.
No dobrze a gdybym jednak chciał sobie to utrudnić i nie korzystać z Firebase? To jak to można zrobić?
Ktoś ? coś?
To nie można nic zrobić, chyba że chcesz, żeby twoja aplikacja rozładowywała baterię w telefonie
Akurat na baterii nie zależy mi bo to będzie na Android Tv na Mi BOX
Nie wierze że nie ma żadnej technologi oprócz Firebase?