Existe uma forma correta para a configuração do FCM em um projeto Quarkus? Se sim, qual seria essa forma correta?
Existe uma forma correta para a configuração do FCM em um projeto Quarkus? Se sim, qual seria essa forma correta?
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!