- 일단 firebase와 spring boot 연동에 관해서 firebase 공식 홈페이지에 설명이 너무 잘 나와 있어서 꼭 참고 하는걸 권장합니다.
// 나중에 config 설정할 때 필요
FileInputStream serviceAccount =
new FileInputStream("path/to/serviceAccountKey.json");
FirebaseOptions options = new FirebaseOptions.Builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccount))
.build();
FirebaseApp.initializeApp(options);
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>
@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());
}
}
}
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. 기기별로 디자인이나 아이콘 설정을 따로 할 수 있으니 자세한건 더 찾아보시면 될 거 같습니다.