2
respostas

[Dúvida] Configuração do Firebase Cloud Messaging em um projeto Quarkus.

Existe uma forma correta para a configuração do FCM em um projeto Quarkus? Se sim, qual seria essa forma correta?

2 respostas

Oi Giovanni, tudo bem?

Configurar o Firebase Cloud Messaging (FCM) em um projeto Quarkus é bastante simples. Primeiro, você precisa adicionar a dependência do FCM ao seu arquivo pom.xml. Você pode fazer isso adicionando o seguinte trecho de código:

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-fcm</artifactId>
</dependency>

Depois de adicionar a dependência, você precisa configurar as informações do FCM em seu arquivo application.properties. Você pode fazer isso adicionando as seguintes linhas:

quarkus.fcm.enabled=true
quarkus.fcm.server-key=<sua-chave-do-servidor>

Certifique-se de substituir <sua-chave-do-servidor> pela chave do servidor FCM fornecida pelo Firebase.

Com essas configurações em vigor, você pode injetar a classe FCMClient em seus componentes Quarkus e usá-la para enviar notificações por push. Aqui está um exemplo de como você pode fazer isso:

@Inject
FCMClient fcmClient;

public void enviarNotificacao(String token, String titulo, String mensagem) {
    FcmMessage message = new FcmMessage.Builder()
            .to(token)
            .notification(new FcmNotification.Builder()
                    .title(titulo)
                    .body(mensagem)
                    .build())
            .build();

    fcmClient.send(message);
}

Neste exemplo, a classe FCMClient é injetada usando a anotação @Inject e usada para enviar uma notificação para um dispositivo específico.

Um abraço e bons estudos.

FirebaseConfig.java:

package com.exemplo.firebase.config;

import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.messaging.FirebaseMessaging;
import io.quarkus.runtime.Startup;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import java.io.FileInputStream;
import java.io.IOException;

@Startup
@ApplicationScoped
public class FirebaseConfig {

    @Inject
    FirebaseMessaging firebaseMessaging;

    public void initializeFirebase() throws IOException {
        FileInputStream serviceAccount =
            new FileInputStream("firebase-account-service.json");

        FirebaseOptions firebaseOptions = FirebaseOptions.builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .setDatabaseUrl("https://<URL>.firebaseio.com")
            .build();

        FirebaseApp app = FirebaseApp.initializeApp(firebaseOptions, "my-app");
        firebaseMessaging = FirebaseMessaging.getInstance(app);
    }

}

Entendi!