Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat#22] FCM을 활용한 알림 시스템 구현 #23

Merged
merged 9 commits into from
Feb 16, 2024
Merged

Conversation

FacerAin
Copy link
Collaborator

@FacerAin FacerAin commented Feb 9, 2024

🔗 Linked Issue

resolved: #22

🛠 개발 기능

  • FCM을 활용하여 알림 시스템 Config와 Service를 구현하였습니다.

🧩 해결 방법

  • com.google.firebase:firebase-admin 패키지를 활용하였습니다.
  • Token 기반으로 유저에게 메시지를 보내고자 합니다.
  • FCM 사용을 위한 /resources/timeet-firebase-adminsdk.json 파일 추가가 필요합니다.
  • ✅ TODO: 팀 메신저에 firebase-key 파일 관련 가이드 추가하기
  • fcmToken 등록을 위한 컨트롤러와 엔드포인트를 추가하였습니다.
  • userDetail 사용을 위한 custom Annotation을 추가하였습니다.

🔍 리뷰 포인트

  • contoller에서 userDetail을 통해 member 정보를 받아오는 부분에서 문제가 없는지 확인 부탁드려요 ☺️


📋 Code Review Priority Guideline

  • 🚨 P1: Request Change
    • 필수 반영: 꼭 반영해주시고, 적극적으로 고려해주세요 (수용 혹은 토론).
  • 💬 P2: Comment
    • 권장 반영: 웬만하면 반영해주세요.
  • 👍 P3: Approve
    • 선택 반영: 반영해도 좋고 넘어가도 좋습니다. 그냥 사소한 의견입니다.

Copy link
Collaborator

@Starlight258 Starlight258 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 작업중이신가용 ? (WIP ?)

@Starlight258 Starlight258 marked this pull request as ready for review February 9, 2024 07:57
@Starlight258 Starlight258 self-requested a review February 9, 2024 08:32
@Starlight258 Starlight258 marked this pull request as draft February 9, 2024 08:33
@Starlight258 Starlight258 modified the milestones: Sprint 2, Sprint 3 Feb 14, 2024
@FacerAin FacerAin changed the title [WIP] [Feat#22] FCM을 활용한 알림 시스템 구현 [Feat#22] FCM을 활용한 알림 시스템 구현 Feb 15, 2024
@FacerAin FacerAin marked this pull request as ready for review February 15, 2024 14:13

@Bean
FirebaseMessaging firebaseMessaging() throws IOException {
ClassPathResource resource = new ClassPathResource("timeet-firebase-adminsdk.json");
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

firebase 설정과 관련하여 application.yml과 통합을 고려하였는데,
FirebaseApp 구현체에서 기본적으로 json 파일을 불러오는 형태를 사용하여, 해당 구현을 따랐습니다!

import java.lang.annotation.Target;
import org.springframework.security.core.annotation.AuthenticationPrincipal;

@Target({ElementType.PARAMETER, ElementType.ANNOTATION_TYPE})
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spring security 관련하여
access 정보로부터 member 정보 불러올 때 가독성과 유지보수를 높이기 위해 다음과 같이 custom annotation을 사용하였는데, annotation으로 인한 side-effect나 단점이 없을지 궁금합니다 ☺️

참고자료: https://sol-devlog.tistory.com/3

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

코드 중복도 줄이고 정말 좋은 방법이네요!
저도 만든 어노테이션 잘 활용해보겠습니다 :)

@Starlight258
Copy link
Collaborator

LTGM :)

@FacerAin FacerAin merged commit 507a634 into dev Feb 16, 2024
1 check passed
@Starlight258 Starlight258 deleted the feat/fcm branch March 18, 2024 00:38
@Starlight258 Starlight258 restored the feat/fcm branch March 18, 2024 00:38
@Starlight258 Starlight258 deleted the feat/fcm branch March 18, 2024 00:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants