본문 바로가기
IT/기타

JAVA Spring에서 FCM PUSH 보내는 방법

by TechTonic 2024. 1. 13.
반응형

JAVA SpringFramework에서 FCM(Firebase Cloud Messaging) PUSH 보내는 방법에 대해 작성합니다.

 

이번 내용에서는 서버에서 앱으로 FCM PUSH보내는 방법에 대해서만 작성할 것이며, 다음 글에서 앱에서 PUSH받는 방법을 작성할까 합니다.

 

1. Firebase console에 프로젝트 생성

FCM을 사용하기 위해서는 Firebase에 앱을 등록해야 합니다.

 

1.1. Firebase console 접속

 - 아래 Firebase console 사이트에 접속합니다.

https://firebase.google.com/?hl=ko

 

Firebase | Google’s Mobile and Web App Development Platform

개발자가 사용자가 좋아할 만한 앱과 게임을 빌드하도록 지원하는 Google의 모바일 및 웹 앱 개발 플랫폼인 Firebase에 대해 알아보세요.

firebase.google.com

 

Firebase 사이트 접속 및 콘솔 이동

 

 

 

1.2. Firebase 프로젝트 생성

프로젝트 생성

 

프로젝트 이름 설정

임의 프로젝트 이름을 작성합니다.

 

애널리틱스 설정

애널리틱스 사용설정을 ON한 뒤 계속 진행합니다.

 

애널리틱스 구성

 

애널리틱스 계정을 선택 또는 만들고 프로젝트를 생성합니다.

 

만들어진 프로젝트를 선택 후 앱을 추가합니다.

여기서는 Android 앱으로 작성할 것입니다.

 

1.3. Android 앱 추가

Android 앱 추가

 

Android 이미지를 클릭하고 생성 인터페이스로 이동합니다.

 

앱 등록

사용할 Android 앱의 패키지명을 입력하고

Firebase console에서 보여질 앱 닉네임을 임의 이름으로 작성합니다.

디버그 서명 인증선느 생략하셔도 됩니다.

 

google service 구성파일

 

google-services.json 파일을 다운로드 받습니다.

해당 파일은 Android 앱 프로젝트에 추가되어야 하며, 해당 파일이 있어야 google service를 사용할 수 있습니다.

 

Firebase SDK 추가

 

앱에서 사용중인 gradle type을 설정하고 <project> gradle 파일에 google-services plugin을 추가합니다.

 

Firebase SDK 추가2

 

<app> gradle 파일에 google-services plugin과 dependencies 를 추가합니다.

 

이렇게 하면 앱 등록은 완료된 상태입니다.

앱 등록 완료

 

이제 서버(java 프로젝트)에 필요한 앱의 키를 다운로드 받아봅시다.

 

1.4. Firebase 계정 키 생성

 - 서버에서 FCM을 사용하기 위해서 firebase service 키를 서버 프로젝트에 등록해야 합니다.

 

프로젝트 설정

 

"설정 > 프로젝트 설정" 메뉴를 통해 메뉴화면으로 진입합니다.

 

서비스 계정

 

"서비스 계정" 탭을 클릭합니다.

 

키 생성

 

서버에서 사용중인 언어를 선택하고 "새 비공개 키 생성" 버튼을 클릭합니다.

 

비공개 키 생성

 

"키 생성" 버튼을 클릭합니다.

버튼을 클릭하면 "fcm-test-****-firebase-adminsdk-******-*********.json" 와 같은 json 파일을 다운로드 받습니다.

해당 파일이 서버 즉, java 프로젝트에서 사용될 키 입니다.

 

이제 FCM을 사용할 준비는되었으니 서버 로직에 적용해 보도록 하겠습니다.

 

2. JAVA 프로젝트에 FCM PUSH 적용

2.1. json 파일 저장

 - 위에서 다운로드 받은 "fcm-test-****-firebase-adminsdk-******-*********.json" json 파일을 프로젝트 임의 폴더에 저장합니다.

 - 저는 resources 폴더에 저장했습니다.

 

json 파일 저장

2.2. FCM 코드 구현

 

Firabase 초기화 코드

 - FirebaseInitializer.java 

public class FirebaseInitializer {

    public static void initialize() {
    	if (FirebaseApp.getApps().isEmpty()) {
	        try {
	            FileInputStream serviceAccount = new FileInputStream("target/classes/goodshost-*****-firebase-adminsdk-r00zj-*******2.json");
	
	            FirebaseOptions options = new FirebaseOptions.Builder()
	                    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
	                    .build();
	
	            FirebaseApp.initializeApp(options);
	        } catch (Exception e) {
	            e.printStackTrace();
	        }
    	}
        
    }
}

 

FCM 서비스 코드

 - FcmService.java

public class FcmService {

    public static String sendNotification(String token, String title, String body) {
        Message message = Message.builder()
                .setNotification(Notification.builder()
                        .setTitle(title)
                        .setBody(body)
                        .build())
                .setToken(token)
                .build();

        try {
            return FirebaseMessaging.getInstance().send(message);
        } catch (Exception e) {
            e.printStackTrace();
            return "Failed to send notification";
        }
    }
}

 

FCM 서비스 실행

public class Main {
    public static void main(String[] args) {
        FirebaseInitializer.initialize();

        String response = FcmService.sendNotification(
            "앱에서 할당받은 FCM token",
    		"title",
    		"massge"
        );

        System.out.println("Message sent response: " + response);
    }
}

 

위와 같이 FCM 보내는 코드에서 sendNotification 을 통해 PUSH를 보낼수 있다.

주의할 점은 첫번째 파라미터에 앱 실행 시 할당 받은 FCM token 값을 넣어줘야 합니다.

 

이렇게 서버단에서 FCM PUSH 보내는 방법에 대해 알아보았습니다.

 

반응형

댓글