Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Teste FCM - Remover no firestore e replicar internamente

Boa noite.

Não estou usando uma API web, estou tentando enviar as mensagens diretamente para o dispositivo. O firebase está configurado corretamente: ao realizar um cadastro no celular, ele é salvo no firebase; se for excluído no celular, é feito no firebase também.

Contudo, o problema é quando essa exclusão é feita em um dispositivo, pois não é replicada nos outros dispositivos. Com isso, precisava do FCM para receber essa notificação e tratá-la, porém nenhuma mensagem está chegando.

No manifest está:

<service
            android:name=".database.firebase.MyFirebaseMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

FirebaseMessagingService:

public class MyFirebaseMessagingService extends FirebaseMessagingService {

    public static final String TAG = "MensagemRecebida";

    @Override
    public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        Map<String, String> mensagemRecebida = remoteMessage.getData();
        Log.i(TAG, String.valueOf(mensagemRecebida));
    }
}

Fiz um teste enviando uma notificação diretamente pelo site e todos os dispositivos receberam, mas eles não recebem as alterações no banco do firestore.

O que estaria faltando, por favor?

3 respostas

Thiago, tudo bem ?

Cara um servico não está atrelado ao outro, sei que o firestone assim como o realtime database, tenta atualizar os dados na hora, mas sua aplicacão precisa estar pronta pra ouvir com os listeners, talvez algum listener seu não esteja configurado corretamente.

Pelo código que tu mandou, o push notification está perfeito :)

Bom dia, Matheus. Tudo ótimo e contigo? Abri o fórum no curso errado (isso que dá fazer muitos ao mesmo tempo hahaha)

Estou tentando fazer mais ou menos como neste: https://cursos.alura.com.br/course/android-sincronizacao-com-servidor-parte-2/task/24309

Mas a diferença é que, no momento, não estou usando uma API Web; somente firestore e app. A classe FirebaseMessagingService não deveria receber as notificações do firebase diretamente no app?

solução!

Boa noite, pessoal

O FCM não funcionou comigo, mas achei essa possibilidade:

FirebaseFirestore db = FirebaseFirestore.getInstance();
        db.collection(VISITA).addSnapshotListener((value, e) -> {
            if (e != null) {
                Log...
                return;
            }

            for (DocumentChange dc : value.getDocumentChanges()) {
                switch (dc.getType()) {
                    case REMOVED:
                        //código
                        break;
                }
            }
        });

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software