fcm alarm

Jaymee·2021년 10월 18일
0

yeomanda 채팅 알람을 구현하기 위해 google fcm 기능을 사용했다.
어플을 설치하면 저장되는 fcm token(디바이스 기준으로 설치된다.)을 디비에 따로 저장하고 로그인 할 당시 해당 토큰을 서버로 같이 보내준다. 이렇게만 하면 문제가 없다. 내 핸드폰으로 어플을 사용한다면.

하지만, 우리는 여기서 멈추지 않았다. 만약 내가 다른 사람의 핸드폰(A)으로 어플을 사용하면 다른 사람의 핸드폰(A)으로 알람이 와야 하지 않을까?

아래와 같은 경우들이 있다.

case 0. 각자 본인 핸드폰을 사용할 경우

이 경우는 문제가 없다. 기존에 저장된 디비를 바탕으로 구현하면 돼.

case 1. Jane이 Thomas의 핸드폰을 이용할 경우

이렇게 되면 디비에서 토마스의 토큰을 제인의 토큰으로 변경하고 제인의 토큰을 null로 처리해야 한다. 토마스의 토큰을 제인의 토큰으로 변경한다는 의미는 제인의 토큰으로 알람이 갈때 토마스의 휴대폰으로 알람이 가야 한다는 의미이다.

case 2. case 1에서 다시 Jane이 본인 휴대폰을 사용할 경우

select * from [table_name] where token = '${token}' 으로 주어진 토큰값을 가지고 데이터를 찾고 그에 해당 하는 이메일이 주어진 이메일과의 동일여부를 확인한다. 만약에 다르다면 그 토큰을 null로 처리하고 주어진 토큰으로 업데이트 한다.

case 3. case 1에서 thomas가 본인 휴대폰을 사용할 경우

case 2와 마찬가지로 쿼리하고 나서 찾아지는 데이터가 없으면 새롭게 업데이트한다.

위와 같은 방법으로 알고리즘을 짜서 구현하면 내가 처음에 회원가입할 때 주어지는 토큰이 바뀌지 않는 한, 어떤 휴대폰을 통해 어플을 사용해도 현재 사용하고 있는 휴대폰으로 알림이 가게 된다.

profile
backend developer

0개의 댓글