FCM 알림 전송 로직 추가 및 변경

Uhan33·2024년 4월 26일
0

TIL

목록 보기
72/72

로그인하면 해당 브라우저의 FCM 토큰을 받고,
이 토큰을 유저 DB에 저장해서 접속한 최신 브라우저를 기억한다.
새로운 브라우저로 들어왔는지 검사하고 만약 새로운 브라우저라면 로그인 시 유저 DB에 있는 브라우저의 FCM 토큰을 최신 브라우저의 토큰으로 변경해주고,
해당 유저가 가지고있는 스케줄을 검색한 뒤, 해당 스케줄에 대한 알림을 새로운 브라우저 토큰을 사용해서 CronJob을 통해 알림 스케줄을 추가해준다.

	// UserService - Login
    if (user.token !== loginDto.token) {
      await this.userRepository.update({ id: user.id }, { token: loginDto.token });
      const schedules = await this.scheduleRepository.find({
        where: {
          ptTime: Raw((alias) => `${alias} > NOW()`),
          userId: user.id
        },
      })

      for(let schedule of schedules) {
        const cronJobId = uuidv4();

        let date = schedule.ptTime;
        date.setMinutes(date.getMinutes() - 10);

        // this.schedulerRegistry.deleteCronJob(schedule.cronJobId);
        await this.messageService.addCronJob(loginDto.token, 'PT를 준비해주세요! 10분 뒤 시작합니다!',
        `날짜 : ${schedule.ptTime.toLocaleString()}`,
        date, cronJobId)
      }
      
    }

추가로 포그라운드 알림과 알림 메세지 클릭 시 해당 사이트로 이동 기능까지 구현해보려 한다.

0개의 댓글