Spring Boot FCM 푸시 알림 보내기 설정

Spring Boot에서 Firebase Cloud Messaging을 이용하여 푸시 알림을 보내기


관련 글

1. Firebase 설정

프로젝트 개요 - 프로젝트 설정에 들어가고,

프로젝트 설정

서비스 계정 탭에서 백엔드 언어에 맞게 checkbox를 선택하고 새 비공개 키 생성을 클릭하면 됩니다.

프로젝트 설정

저 같은 경우는 moyora-24f90-firebase-adminsdk-lj9jn-ce0c042d79.json 이름으로 파일이 생성됐고 Java + Spring Boot로 백엔드를 구성하고 있기 때문에 src/main/resources/firebase 폴더에 추가했습니다.

프로젝트 설정

2. Spring Boot 설정

spring에서 fcm을 사용하기 위해 firebase-admin 의존성을 추가해야 합니다. build.gradle.kts 파일에 아래와 같이 추가합니다.

// firebase
implementation("com.google.firebase:firebase-admin:9.2.0")

그리고 FCMConfig 클래스를 생성해서 FirebaseMessaging을 Bean으로 등록합니다.

@Configuration
public class FCMConfig {
 
    @Bean
    FirebaseMessaging firebaseMessaging() throws IOException {
        ClassPathResource resource = new ClassPathResource("firebase/moyora-24f90-firebase-adminsdk-lj9jn-ce0c042d79.json");
        InputStream refreshToken = resource.getInputStream();
 
        FirebaseApp firebaseApp = null;
        List<FirebaseApp> firebaseAppList = FirebaseApp.getApps();
 
        if (firebaseAppList != null && !firebaseAppList.isEmpty()) {
            for (FirebaseApp app : firebaseAppList) {
                if (app.getName().equals(FirebaseApp.DEFAULT_APP_NAME)) {
                    firebaseApp = app;
                }
            }
        } else {
            FirebaseOptions options = FirebaseOptions.builder()
                    .setCredentials(GoogleCredentials.fromStream(refreshToken))
                    .build();
            firebaseApp = FirebaseApp.initializeApp(options);
        }
 
        return FirebaseMessaging.getInstance(firebaseApp);
    }
}

마지막으로 FCMService 클래스를 생성해서 푸시 알림을 보내는 메서드를 작성합니다. 간단하게 코드로 보여드리자면 FirebaseMessaging을 주입받아서 원하는 알림을 보내고자 하는 device token에 send 메서드를 사용하면 됩니다.

public class FCMService {
 
    private final FirebaseMessaging firebaseMessaging; // 의존성 주입
    private final DeviceTokenService deviceTokenService;
 
    firebaseMessaging.send(message);
}

자세한 코드 구현은 다음 글에서 다루도록 하겠습니다. 감사합니다!