
앱 푸시를 개발하기 위해 firebase의 FCM 기능을 사용하기로 했다.
FCM 기능을 개발하기 위해 Firebase Admin SDK를 사용하기로 했고, Spring boot, Java 환경인 서버에서 Firebase Admin SDK를 사용하기 위한 방법을 알아보자.
Firebase Admin SDK를 사용하려면, 우선 Firebase project를 등록해야한다.
https://console.firebase.google.com/?hl=ko&pli=1 // firebase console
firebase console 사이트에서 프로젝트를 추가해보자.

프로젝트가 생성이 됐다면, Firebase Admin SDK 키를 생성해야 한다.

프로젝트 설정 -> 서비스 계정 -> 새 비공개 키 생성을 누른다.

json 파일이 생성되고 이것은 프로젝트에서 Admin SDK 기능을 사용하기 위해 쓰는 키이다.
공식 문서에 나와있는 대로 build.gradle 에서 dependencies를 추가한다.
Maven 인 경우 pom.xml 파일에 추가해주면 된다.
dependencies {
implementation 'com.google.firebase:firebase-admin:9.2.0'
}
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>9.2.0</version>
</dependency>
이제, 아까 사용했던 key를 이용해 sdk를 초기화 해줘야 한다.
구글에서는 GOOGLE_APPLICATION_CREDENTIALS 환경변수를 설정해서 서비스 계정 키가 포함된 JSON 파일의 경로를 설정하는 것을 강력하게 추천하고 있다.
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\service-account-file.json"
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
환경변수를 등록한 후, 프로젝트에서 FirebaseConfig.java 파일을 생성한 뒤 @Configuration을 사용해 bean에 등록해주자.
@Configuration
public class FirebaseConfig {
private FirebaseApp firebaseApp;
@PostConstruct
public FirebaseApp initializeFcm() throws IOException {
FirebaseOptions options = FirebaseOptions.builder()
.setCredentials(GoogleCredentials.getApplicationDefault())
.build();
firebaseApp = FirebaseApp.initializeApp(options);
return firebaseApp;
}
@Bean
public FirebaseMessaging initFirebaseMessaging() {
return FirebaseMessaging.getInstance(firebaseApp);
}
}
프로젝트를 실행해보면 정상적으로 구동이 되는 것을 확인할 수 있다.
참조문서
https://firebase.google.com/docs/admin/setup?hl=ko#windows