Firebase Cloud Messaging

0

Może ma ktoś doświadczenie z Firebase Cloud Messaging? Jakby ktoś pokrótce opisał jak to działa. Chciałbym zrobić wysyłanie powiadomień do użytkowników o konkretnym id z poziomu admina w aplikacji. Póki co udało mi się wysłać proste powiadomienia z managera firebase do każdego kto używa aplikacji, ale to nie o to chodzi.

1

Podczas rejestracji urządzenia w FCM pobierasz token - ten token nastepnie wysyłasz do swojego API gdzie przypisujesz ten token urządzenia do usera który go wysłał - nastepnie przy wysłaniu wiadomości pobierasz tokeny FCM jakie user dodał i wysylasz pusha na podane tokeny.

0
Narror napisał(a):

Podczas rejestracji urządzenia w FCM pobierasz token - ten token nastepnie wysyłasz do swojego API gdzie przypisujesz ten token urządzenia do usera który go wysłał - nastepnie przy wysłaniu wiadomości pobierasz tokeny FCM jakie user dodał i wysylasz pusha na podane tokeny.

Brzmi prosto, ale z tego co czytam dokumentacje to potrzebny jest własny serwer? musi być zawsze online żeby wysyłać wiadomości?

1

Własny serwer albo odpowiednio przygotowana baza firebase - różnie można do tego podejść.

0

Podpowiedziałbyś coś jak ten serwer uruchomić? w dokumentacji żadnej informacji o tym nie widzę. to ma być node.js? jak się za to zabrać?

0

Mam node.js jak to w ogole wlaczyc, gdzie wkleic pliki admina z dokumentacji firebase? zadnego tutorialu sensownego nie moge znalezc

0

A takie coś by ciebie nie urządzało? https://onesignal.com/

0

wolałbym ogarnąć ten firebase cloud messages

0

Może na forum serwerowców lepiej iść z tym problemem? W ogole nie mam pojecia jak ten serwer odpalic co tam wklepaca co jak gdzie. w dokumentacji wrzucili opis tylko co wykonac na serwerze

0

Przecież wszystko masz w dokumentacji od Google

0

https://firebase.google.com/docs/cloud-messaging/server

nic nie widze. nie widze jak uruchomic ten serwer, nie widze jak wybrac do ktorego uzytkownika ma byc wyslana wiadomosc. jedynie widze, jak pobrac token i jak zainstalowac firebase cloud messenger i wysylac wiadomosci do wszystkich

0

Ale jaki serwer? Wysyłasz jsona albo używasz api.

0

nie wiem, nie rozumiem nic z tego. pobralem node.js nie wiem jak to wlaczyc, nie wiem co tam uruchomic, nie wiem jak to ma dzialac. nic w dokumentacji nie ma. z tutorialu w internecie wrzucam funkcje do firebase przez cmd, ale oczywiscie pokazuje, ze je zaladowali i nic tam nie ma.

0

Wszystko jest opisane:
https://firebase.google.com/docs/cloud-messaging/send-message
https://firebase.google.com/docs/cloud-messaging/concept-options

Sorry jak nie umiesz nawet przeczytać dokumentacji, to wiele nie osiągniesz. Masz nawet przykład gotowej aplikacji na Githubie od Google, źródła, komentarze, tutoriale. O co ci chodzi?

0

dalej nie widzę jak włączyć ten node.js, jak zrobić z niego serwer i gdzie wrzucić ten kod co tam podali

0

Oj chyba prosisz się o dział "Perełki"? Najpierw odpowiedz sobie kto i gdzie ma generować powiadomienie, jeżeli masz jakiś serwer jako backend to logiczne, że to tam ma być

A co do api w js/NodeJS to też masz wszystko opisane jak krowie na rowie:
https://firebase.google.com/docs/admin/setup i przykłady pełnego kodu na Githubie. SDK możesz odpalić na serwerach Firebase

No sorry, jak nie umiesz nawet otworzyć dokumentacji, to ja ci nie będę linkować wszystkiego po kolei, wróć jak zrozumiesz co chcesz zrobić i wróć z konkretnym problemem

0

edit.
mój błąd. idzie powoli do przodu. dzięki kolego za uwagę :)

0

Mam wgrana funkcje do wiadomosci z utorialu na yt. siedzi ona w firebase i jak teraz wyslac jakas wiadomosc

const functions = require('firebase-functions');
 
const admin = require('firebase-admin');
admin.initializeApp();
 
exports.notifyNewMessage = functions.firestore
    .document('chatChannels/{channel}/messages/{message}')
    .onCreate((docSnapshot, context) => {
        const message = docSnapshot.data();
        const recipientId = message['recipientId'];
        const senderName = message['senderName'];
 
        return admin.firestore().doc('users/' + recipientId).get().then(userDoc => {
            const registrationTokens = userDoc.get('registrationTokens')
 
            const notificationBody = (message['type'] === "TEXT") ? message['text'] : "You received a new image message."
            const payload = {
                notification: {
                    title: senderName + " sent you a message.",
                    body: notificationBody,
                    clickAction: "ChatActivity"
                },
                data: {
                    USER_NAME: senderName,
                    USER_ID: message['senderId']
                }
            }
 
            return admin.messaging().sendToDevice(registrationTokens, payload).then( response => {
                const stillRegisteredTokens = registrationTokens
 
                response.results.forEach((result, index) => {
                    const error = result.error
                    if (error) {
                        const failedRegistrationToken = registrationTokens[index]
                        console.error('blah', failedRegistrationToken, error)
                        if (error.code === 'messaging/invalid-registration-token'
                            || error.code === 'messaging/registration-token-not-registered') {
                                const failedIndex = stillRegisteredTokens.indexOf(failedRegistrationToken)
                                if (failedIndex > -1) {
                                    stillRegisteredTokens.splice(failedIndex, 1)
                                }
                            }
                    }
                })
 
                return admin.firestore().doc("users/" + recipientId).update({
                    registrationTokens: stillRegisteredTokens
                })
            })
        })
    })
0

Dokumentacja pokazuje jak w kotlinie pobrać token użytkownika, a w następnym podpunkcie jakieś kody do node.js jak ja to mam w ogóle uruchomić i gdzie to wrzucić?

0

Miałem Ci wysłać całe rozwiązanie ale mi sie odechciało - powodzenia.

0

4 dzien nie wiem jak to zrobic. beka kod w kotlinie ktory dziala, a za chwile jakies node.js i zero wyjasnienia co z tym

1

Piszesz trochę jakbyś nie rozumiał podstaw konceptu wysyłania push notyfikacji i nie umiał tego doczytać: W mobilny kod wpinasz SDK Firebase -> SDK czyta token urządzenia -> na API Firebase wysyłasz zapytanie, w którym dajesz treść powiadomienia i ten token.

W praktyce zapewne masz w aplikacji jakiś back-end i ten token trzymasz w bazie danych, więc logikę wysyłania powiadomienia masz w swoim back-endzie.

Spróbuj zastanowić się nad tym generalnie, nie skupiając się na technologii to od razu ułoży się w głowie

1 użytkowników online, w tym zalogowanych: 0, gości: 1