SWM-15th-Dnight / flutter-client

android / ios client source code
0 stars 0 forks source link

현재 클라이언트에서 fcmToken을 뱉는 시점에 관하여 #49

Open call-me-bammer opened 3 weeks ago

call-me-bammer commented 3 weeks ago

fcmToken을 투척할 수 있는 api가 아직 없는 것으로 압니다.

분명 앱을 실행하면 fcm 토큰을 뱉는데, 그래서 지금 클라이언트에서는 어느 시점에서 fcm 토큰을 밷는지에 대해서 알아보겠습니다.

쉽게 말해서 SplashScreen이 뜨기도 전에 앱을 시작하자마자 한 번 뜹니다.

먼저 main.dart가 실행되고, firebase auth 관련 설정, 날짜 포멧 관련 초기화, 환경 변수 파일 불러오기 등을 진행하다가 FirebaseApi().initNotification();에서 앱의 최상단의 상태관리 라이브러리 스코프 설정 전에 노티 관련 초기화를 진행합니다.

/* main.dart */

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await initializeDateFormatting();

  await dotenv.load(fileName: '.env');

  await Firebase.initializeApp(
    options: DefaultFirebaseOptions.currentPlatform,
  );

  /* Firebase Cloud Message */
  FirebaseApi().initNotification();

  runApp(ProviderScope(child: _App()));
}

그래서 initNotification()getFCMToken()을 호출해서 출력되는 상황입니다.

Future<void> getFCMToken() async {
    final fcmToken = await _firebaseMessaging.getToken();
    print('fcmToken: ${fcmToken}');
  }

  Future<void> initNotification() async {
    await _firebaseMessaging.requestPermission(
      alert: true,
      badge: true,
      criticalAlert: true,
      provisional: false,
      sound: true,
    );
    await getFCMToken();
    initPushNotifications();
    initLocalNotifications();
  }
call-me-bammer commented 3 weeks ago

그래서 @inmonim fcm 토큰 투척 api가 생성되면, 어느 시점에서 클라이언트는 토큰을 전달해주어야 하는지 물어봅니다. 켜자마자 한 번...? 로그인 이후...?

추가로 logout 시 jwt 블랙리스트 api도 있으면, 지금 로그아웃 시 바로 연결 가능합니다.

Koderpark commented 3 weeks ago

fcm토큰은 알림 용 토큰이니까 지금 당장 적재하는게 의미가 잇나 싶긴 하네요. firebase에서 로그인단에 받아오는 그 토큰을 아마 인모형이 원할것 같은디? 둘다 일단 들고있다가 로그인 이후에 던져주는게 바람직할거같기는 합니다.

inmonim commented 3 weeks ago

해당 FCM 토큰이 구글 캘린더 API토큰이라면, 앱 로그인시 마다 바뀌지 않고 쭉 유지되는 값인가용? 그렇다면 빠르게 api를 파놓도록 하겠소

call-me-bammer commented 3 weeks ago

어........ 이게 노티 관련 시 사용되는 토큰은 확실한데, Firebase랑 같이 해서 구글 API를 이용할 수 있는지 모르겠네요.

관련 문서이고요, 구글 로그인 정상화 시키고 알아오겠습니다.

https://firebase.google.com/docs/cloud-messaging/android/first-message?hl=ko&authuser=0&_gl=1*1s4t2tw*_ga*MTYwNzQzMzkxMi4xNzIwMTc3NzE0*_ga_CW55HF8NVT*MTczMDU2MDQyMS44MC4xLjE3MzA1NjA0NDEuNDAuMC4w#retrieve-the-current-registration-token

이걸 알아보는 것으로 이해했습니다.

https://www.notion.so/swm-cod/11-Action-Plans-40cf7e2e29524839b1b9fa0e27fd8be8?pvs=4#3d599c3442c64a9d86f39e8ccc14af10