diff --git a/.gitignore b/.gitignore index ff47af8..2c056f5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,9 @@ +FirebaseConfig.* +FcmUtils.* +FirebaseConfig.* +FcmController.* +FcmService.* + HELP.md .gradle build/ diff --git a/src/main/java/zero/eight/donut/config/firebase/FcmUtils.java b/src/main/java/zero/eight/donut/config/firebase/FcmUtils.java index f7fdb29..1ca8cf4 100644 --- a/src/main/java/zero/eight/donut/config/firebase/FcmUtils.java +++ b/src/main/java/zero/eight/donut/config/firebase/FcmUtils.java @@ -6,6 +6,7 @@ import com.google.firebase.messaging.Notification; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Component; import zero.eight.donut.config.jwt.AuthUtils; import zero.eight.donut.domain.FcmToken; import zero.eight.donut.domain.Giver; @@ -21,6 +22,7 @@ @Slf4j @RequiredArgsConstructor +@Component public class FcmUtils { private final AuthUtils authUtils; @@ -90,4 +92,4 @@ public Message makeMessage(String targetToken, String title, String body) { .setToken(targetToken) .build(); } -} +} \ No newline at end of file diff --git a/src/main/java/zero/eight/donut/config/firebase/FirebaseConfig.java b/src/main/java/zero/eight/donut/config/firebase/FirebaseConfig.java index 7faebcb..1e0717b 100644 --- a/src/main/java/zero/eight/donut/config/firebase/FirebaseConfig.java +++ b/src/main/java/zero/eight/donut/config/firebase/FirebaseConfig.java @@ -3,11 +3,12 @@ import com.google.auth.oauth2.GoogleCredentials; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; +import com.google.firebase.messaging.FirebaseMessaging; +import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.annotation.PostConstruct; import java.io.FileInputStream; -import java.io.FileNotFoundException; @Configuration public class FirebaseConfig { @@ -25,4 +26,24 @@ public void init() { e.printStackTrace(); } } -} + + + @Bean + public FirebaseMessaging firebaseMessaging() { + try { + FileInputStream serviceAccount = + new FileInputStream("src/main/resources/serviceAccountKey.json"); + + FirebaseOptions options = new FirebaseOptions.Builder() + .setCredentials(GoogleCredentials.fromStream(serviceAccount)) + .build(); + + if (FirebaseApp.getApps().isEmpty()) { // FirebaseApp의 중복 초기화 방지. + FirebaseApp.initializeApp(options); + } + return FirebaseMessaging.getInstance(); + } catch (Exception e) { + throw new IllegalStateException("Firebase Messaging 서비스를 초기화하는 동안 문제가 발생했습니다.", e); + } + } +} \ No newline at end of file