본문 바로가기

개발/BACK

Spring Boot에서 Firebase Messaging 구현하기

728x90

 

Firebase Cloud Messaging(FCM)은 모바일과 웹 애플리케이션에서 푸시 알림을 전송하는 데 유용한 서비스입니다. 이번 포스팅에서는 Spring Boot를 사용하여 Firebase Messaging을 구현하는 방법을 간단하게 설명하겠습니다.

 

 

 

1. Firebase 프로젝트 설정

먼저, Firebase 콘솔에서 새로운 프로젝트를 생성하고 Firebase Cloud Messaging을 설정합니다.

  1. Firebase 콘솔에 접속하여 새 프로젝트를 생성합니다.
  2. 프로젝트 설정으로 이동하여, "서비스 계정" 탭에서 새로운 비공개 키를 생성합니다.
  3. 생성된 JSON 파일을 다운로드하여 프로젝트의 src/main/resources 디렉토리에 저장합니다.

2. Spring Boot 프로젝트 설정

Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. 필요한 의존성으로는 Spring WebSpring Boot Starter JSON을 추가합니다.

생성된 프로젝트의 pom.xml 파일에 Firebase Admin SDK 의존성을 추가합니다.

 

<!-- pom.xml -->
<dependency>
    <groupId>com.google.firebase</groupId>
    <artifactId>firebase-admin</artifactId>
    <version>8.0.1</version>
</dependency>

 

3. Firebase 초기화

Firebase Admin SDK를 초기화하는 구성 클래스를 작성합니다.

 

// FirebaseConfig.java
import com.google.auth.oauth2.GoogleCredentials;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.io.FileInputStream;
import java.io.IOException;

@Configuration
public class FirebaseConfig {

    @Bean
    public FirebaseApp initializeFirebase() throws IOException {
        FileInputStream serviceAccount =
            new FileInputStream("src/main/resources/firebase-service-account.json");

        FirebaseOptions options = FirebaseOptions.builder()
            .setCredentials(GoogleCredentials.fromStream(serviceAccount))
            .build();

        return FirebaseApp.initializeApp(options);
    }
}

 

 

4. Firebase 메시지 전송 서비스 작성

Firebase 메시지를 전송하는 서비스를 작성합니다.

 

// FCMService.java
import com.google.firebase.messaging.FirebaseMessaging;
import com.google.firebase.messaging.Message;
import com.google.firebase.messaging.Notification;
import org.springframework.stereotype.Service;

@Service
public class FCMService {

    public void sendMessage(String token, String title, String body) throws Exception {
        Message message = Message.builder()
            .setToken(token)
            .setNotification(new Notification(title, body))
            .build();

        String response = FirebaseMessaging.getInstance().send(message);
        System.out.println("Successfully sent message: " + response);
    }
}

 

 

5. 메시지 전송 컨트롤러 작성

메시지를 전송하는 엔드포인트를 제공하는 컨트롤러를 작성합니다.

 

// NotificationController.java
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class NotificationController {

    @Autowired
    private FCMService fcmService;

    @PostMapping("/send")
    public String sendNotification(@RequestParam String token,
                                   @RequestParam String title,
                                   @RequestParam String body) {
        try {
            fcmService.sendMessage(token, title, body);
            return "Notification sent successfully";
        } catch (Exception e) {
            e.printStackTrace();
            return "Failed to send notification";
        }
    }
}

 

 

6. 애플리케이션 실행 및 테스트

애플리케이션을 실행하고, Postman을 사용하여 메시지를 전송하는 엔드포인트에 접근합니다.

 

POST http://localhost:8080/send
Body: x-www-form-urlencoded
- token: {device_token}
- title: "Test Title"
- body: "Test Body"

 

 

결론

이번 포스팅에서는 Spring Boot를 사용하여 Firebase Cloud Messaging을 설정하고 메시지를 전송하는 방법을 설명했습니다. FCM을 사용하면 모바일과 웹 애플리케이션에 푸시 알림을 쉽게 통합할 수 있습니다. Spring Boot와 Firebase를 결합하여 더욱 유연하고 강력한 알림 시스템을 구현해 보세요!

이 포스팅이 도움이 되셨다면, 더 많은 Spring Boot와 Firebase 관련 자료를 확인해 보세요!

728x90