마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

firestore을 이용해서 채팅 어플(앱) 개발중에 질문드립니다!

0 추천
제가 만든 채팅 앱의 원리는 평범합니다.

예로 강아지가 고양이한테 채팅을 보냅니다.

그러면 고양이쪽으로 fcm 메세지를 보내서 이런이런 새로운 채팅이 왔다고 알려줍니다.

고양이가 이 새로운 채팅 알림을 클릭하면

카카오톡처럼 해당 채팅방에 들어갈겁니다.

 

여기서 질문이 생겼습니다.

 

채팅방을 열때마다 항상 서버측에서 100% 최신 채팅 자료들을 처음부터 끝까지 읽어와서

뿌려주면 가장 깔끔하고 가장 쉬울거같습니다.

근데 그러면 여러가지 비용 측면에서 낭비일거라고 생각됩니다.

거기에 제가 원하는 채팅 기능에 삭제나, 수정은 없습니다.

따라서 채팅 데이터에는 오직 add(insert) 뿐이 없습니다.

 

그래서 제가 생각했던게

마지막으로 해당 채팅방을 열었을때의 시간을 저장해놓고

다음에 해당 채팅방을 열때

그 저장해둔 시간까지는 서버가 아닌 firestore 로컬 캐쉬에서 불러오고,

그 시간 이후로는 서버에서 불러오게끔 하면 어떨까 이었습니다.

 

근데 이쯤에서 들었던 의문이

이렇게하면

혹시 통신 지연같은 문제로 인해

그 저장해둔 시간 직전에 새로 들어온 채팅은

서버에서 불러오지 못하는 문제가 있을수도 있겠다입니다.

 

한번더 설명드리면

2020-09-03 11:00:15 에 마지막으로 채팅방을 열었으면 이 시간을 저장해놓고

그 다음에 채팅방을 열땐  2020-09-03 11:00:15 이후의 채팅만 서버에서 조회합니다.

그런데 다른 사람이 2020-09-03 11:00:14 에 보낸 새로운 채팅이 통신 지연같은문제로 인해

뒤늦게 서버에 등록이 되었다면 이 새로운 채팅은 조회가 안되는 문제가 있을수 있겠다 입니다.

 

이런걸 해결할 방법이 어떤게 있을까 하고 여쭤보려고 합니다.

 

 

 

 

 

 

그리고 또 하나 여쭤보고싶은게

카카오톡 보시면 채팅방마다 몇개의 새로운 채팅이 와있는지

숫자로 보여주고있습니다.

이 기능은 어떤식으로 구현하는 건지

방향 제시좀 해주실수 있을까요?

 

제가 본게 맞는건지 모르겠는데 어디서

firestore 같이 non-sql 데이터 베이스랑

sqlite같이 sql 데이터 베이스를 혼합해서 쓰지 말라고 권장 했었습니다.

그래서 sqlite같이 내부 sql데이터베이스는 생각조차 안하고있었는데

아닐까요?

 

 

선배님들의 조언 부탁드립니다.

감사합니다
김원장91 (1,470 포인트) 님이 2020년 9월 3일 질문
김원장91님이 2020년 9월 3일 수정

1개의 답변

0 추천
해당 채팅방의 마지막에 불러온 정보를 가지고 있다가 그 이후로만 불러올 수도 있습니다. https://firebase.google.com/docs/firestore/query-data/query-cursors?hl=ko

 

기능은 paging 이랑 겹치는 부분이 있으니 검색하실 때 참고하세요.
쎄미 (162,410 포인트) 님이 2020년 9월 4일 답변
...