Firebase App Push & Spring boot 연동

M.S·2024년 3월 27일
  • 일단 firebase와 spring boot 연동에 관해서 firebase 공식 홈페이지에 설명이 너무 잘 나와 있어서 꼭 참고 하는걸 권장합니다.
  1. firebase console에 들어가서 프로젝트 생성
    • 프로젝트 생성 후
    • 왼쪽 상단에 프로젝트 개요 옆에 설정 이모티콘 클릭 후
    • 프로젝트 설정으로 이동
    • 서비스 계정 클릭
    • Admin SDK 구성 스니펫에서 JAVA 선택
// 나중에 config 설정할 때 필요
FileInputStream serviceAccount =
new FileInputStream("path/to/serviceAccountKey.json");

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

FirebaseApp.initializeApp(options);
    • 새 비공개 키 생성
    • 그러면 json 파일이 만들어지는데 이름은 편한대로 변경 가능
    • json 파일을 resources에 넣어준다.
  1. firebase build 하기
    • 자바는 8버전 이상이여야 합니다.
  • 첫번째
    • build.gradle의 경우
dependencies {
	implementation 'com.google.firebase:firebase-admin:9.2.0'
}
  • 두번째
    - Maven을 사용하는 경우 pom.xml에
<dependency>
  <groupId>com.google.firebase</groupId>
  <artifactId>firebase-admin</artifactId>
  <version>9.2.0</version>
</dependency>
  1. config 파일 설정
    • 1번에서 Admin SDK 구성 스니펫에서 JAVA 선택했을 때 나온 코드 삽입
@Configuration
public class FirebaseConfig {

    @Value("${firebase-sdk-path}") // your firebase sdk path
    private String firebaseSdkPath;

    @PostConstruct
    public void initialize() {
        try {

            ClassPathResource resource = new ClassPathResource(firebaseSdkPath);
            InputStream serviceAccount = resource.getInputStream();
            FirebaseOptions options = FirebaseOptions.builder()
                    .setCredentials(GoogleCredentials.fromStream(serviceAccount))
                    .build();
            FirebaseApp.initializeApp(options);

        } catch (FileNotFoundException e) {
            log.error("Firebase ServiceAccountKey FileNotFoundException" + e.getMessage());
        } catch (IOException e) {
            log.error("FirebaseOptions IOException" + e.getMessage());
        }
    }
}
  1. message 만들어서 보내기
public void sendMessage(String targetToken, String title, String body) throws FirebaseMessagingException {
        Message message = null;

        message = makeMessage(targetToken, title, body);

        try{
            String response = FirebaseMessaging.getInstance().send(message);

            System.out.println("response :::::::::: " + response);
        }catch (Exception e){
            log.error("푸쉬 발송 중 에러 ::::::::::: " + e.getMessage());
        }
    }

    // 기본 메세지 빌더
    public Message makeMessage(String targetToken, String title, String body) {
        Notification notification = Notification
                .builder()
                .setTitle(title)
                .setBody(body)
                .build();
        Message message = Message
                .builder()
                .setNotification(notification)
                .setToken(targetToken)
                .build();
        return message;
    }

etc. 기기별로 디자인이나 아이콘 설정을 따로 할 수 있으니 자세한건 더 찾아보시면 될 거 같습니다.

profile
나만의 메모장 같은 기록

0개의 댓글