Firebase Cloud Messaging(FCM)은 모바일과 웹 애플리케이션에서 푸시 알림을 전송하는 데 유용한 서비스입니다. 이번 포스팅에서는 Spring Boot를 사용하여 Firebase Messaging을 구현하는 방법을 간단하게 설명하겠습니다.
1. Firebase 프로젝트 설정
먼저, Firebase 콘솔에서 새로운 프로젝트를 생성하고 Firebase Cloud Messaging을 설정합니다.
- Firebase 콘솔에 접속하여 새 프로젝트를 생성합니다.
- 프로젝트 설정으로 이동하여, "서비스 계정" 탭에서 새로운 비공개 키를 생성합니다.
- 생성된 JSON 파일을 다운로드하여 프로젝트의 src/main/resources 디렉토리에 저장합니다.
2. Spring Boot 프로젝트 설정
Spring Initializr를 사용하여 새로운 Spring Boot 프로젝트를 생성합니다. 필요한 의존성으로는 Spring Web과 Spring Boot Starter JSON을 추가합니다.
- Spring Initializr: https://start.spring.io
- Dependencies: Spring Web, Spring 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 관련 자료를 확인해 보세요!
'개발 > BACK' 카테고리의 다른 글
Spring Boot에서 DB 풀 사이즈와 Auto-Commit 설정 방법 (0) | 2024.07.12 |
---|---|
NoSQL 데이터베이스 정의 및 예제 (0) | 2024.07.10 |
Spring Boot 환경에서 RabbitMQ 적용하기 (0) | 2024.07.10 |
Exploring the Latest JDK Version: Advantages and Issues : JDK20 (0) | 2024.07.08 |
Mastering Transaction Exception Handling in Spring Boot: A Comprehensive Guide (0) | 2024.07.08 |