반응형
FCM(Firebase Cloud Message)의 구조는 우리의 서버에서 FCM백엔드에 메세지 요청을 전송하면 FCM은 사용자 기기의 앱 즉 클라이언트 앱에 메시지를 보내게 되어있습니다
우리의 서버는 FCM 백엔드에 올바른 형식으로 지정된 메시지 요청을 보내야 합니다
기본 설정
Firebase Admin SDK를 이용하시는게 훨씬 편하실거에요
1.프로젝트 생성
https://console.firebase.google.com/
로그인 - Google 계정
하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인
accounts.google.com
2.비공개키 생성
3.resources 하단에 추가
4.의존성 추가
<dependency>
<groupId>com.google.firebase</groupId>
<artifactId>firebase-admin</artifactId>
<version>8.1.0</version>
</dependency>
이제 최소한의 설정은 끝이 났습니다
구현
-빈등록
@Configuration
public class FirebaseConfig {
@Bean
public FirebaseApp firebaseApp() throws IOException {
FileInputStream serviceAccountFile = new FileInputStream("src/main/resources/serviceAccount-File.json");
FirebaseOptions options = FirebaseOptions
.builder()
.setCredentials(GoogleCredentials.fromStream(serviceAccountFile))
.build();
return FirebaseApp.initializeApp(options);
}
@Bean
public FirebaseMessaging firebaseMessaging(FirebaseApp firebaseApp){
return FirebaseMessaging.getInstance(firebaseApp);
}
}
-service
@Service
public class FirebaseMessagingService {
private FirebaseMessaging firebaseMessaging;
public FirebaseMessagingService(FirebaseMessaging firebaseMessaging) {
this.firebaseMessaging = firebaseMessaging;
}
public String sendMessage(String targetToken, String title, String body) throws FirebaseMessagingException {
Message message = makeMessage(targetToken, title, body);
return firebaseMessaging.send(message);
}
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;
}
}
Notification 객체는 모바일 환경에서 제목과 본문을 표시합니다.
Message 객체는 올바르게 요청을 할 수 있게 많은 메소드를 지원합니다
//Message
Message.builder()
.setToken(String)단일 사용자
.setTopic(String)주제 별
.setAndroidConfig() 안드로이드 설정
.setApnsConfig() 애플
.setWebpushConfig() 웹
기기별로 색상과 아이콘을 설정할 수있습니다 역시 구글이네요
부족한부분이 있거나 모르는 부분이있으시다면 댓글주세용
반응형
'spring(스프링)' 카테고리의 다른 글
RestTemplate + kakaoMap Api 사용하기 (0) | 2022.05.31 |
---|---|
spring scheduler 사용하기 (0) | 2022.05.26 |
spring boot와 firebase 연결 방법 (2) (0) | 2022.05.07 |
spring boot와 firebase 연결 방법 (1) (1) | 2022.05.06 |
Querydsl 사용하기 (spring boot,maven) (2) | 2022.05.04 |