Firebase Firestore messenger app – 어떻게 데이터를 유지해야 할까요?

5 답변 글타래를 보이고 있습니다
  • 글쓴이
    • Matthew So
      참가자
      • 글작성 : 2
      • 답글작성 : 3

      안녕하세요:)

      현재 Firestore로 간단한 메신져 앱을 개발 중입니다.

      필요한 view controller가 로드 될 때 마다 snapshot listener로 데이터를 받아서 채팅창이나 tableView에 들어갈 값을 populate하고 있는데요, 어떻게 하면 카톡처럼 데이터를 항상 유지할 수 (아니면 최소한 유지하는 것처럼 보이게 할 수) 있을까요?

      listener로 데이터를 받으면 아무리 짧더라도 로딩 시간이 필요한데, 카톡은 항상 자료가 유지 되는 것처럼 보입니다.

      특정 코드가 안되거나 하는 게 아니라 따로 자료를 올리지는 않았습니다.

      아낌없는 조언 주시면 감사 드리겠습니다!

      • 이 게시글은 Matthew So에 의해 4 years, 3 months 전에 수정됐습니다.
    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      카톡같은 앱들은 서버에서 받아온 자료를 계속해서 로컬에 남겨둘 수 있도록 로컬 데이터베이스를 갖고있을겁니다.
      그래서 채팅방에 들어가면 처음에는 로컬DB 내용을 불러오고, 그러면서 네트워크를 통해 서버에 요청하죠. 그리고 서버에서 응답이 오면 그 내용을 테이블뷰에서 업데이트 할테고요.
      제가 Firestore를 뜯어보지 않아서 잘 모르겠는데요, 만약 Firestore가 로컬DB를 갖고있으면서 증분만 서버에서 받아오는 형태라면 크게 무리가 안될 것 같아요. 그렇지 않고 매 번 채팅방 화면에 진입할 때마다 서버에서 받아오는 형태라면 더 좋은 방식을 모색해 봐야하지 않을까합니다.

    • Matthew So
      참가자
      • 글작성 : 2
      • 답글작성 : 3

      안녕하세요 야곰님

      제가 2년 전 독학 시작했을 때 처음 접했던 강의가 인프런의 야곰님 강의였는데 이렇게 답변까지 받게 되고 영광입니다:) 야곰님 강의 보고 재미있게 코딩 공부 시작할 수 있었고,  소소하지만 앱도 2개 출시 했습니다. 감사합니다!

      올려주신 답변 잘 봤습니다. 아래 추가 질문이 생겼는데 괜찮으시다면 조언 부탁 드릴게요

      1. 로컬DB가 사용자의 local storage, 예를 들면 User Defaults같은 걸로 이해하면 될까요? 
      2. 서버에서 ‘증분’만 받아오는 형태를 말씀해 주셨는데요, 서버 iterate 필요 없이 서버가 갖고 있는 데이터의 변동이 있을 경우에만 다시 자료를 받아오는 것 – 이라고 이해가 됩니다. 맞을까요? 앞서 여쭤봤던 로컬 자료로 로딩 없이 일단 UI 를 먼저 update하는 것도 중요하지만, 또한 동시에 서버 과금도 최대한 줄이는 것도 절실하기 때문에 염치 불구 또 질문 드립니다. 서버 통신을 최대한 줄이고 싶어서요ㅜㅜ

       

      감사합니다:)

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      제가 영광이지요. 독학해서 앱을 만든다는 것이 정말 어려운일인데, 대단하십니다!

      1. UserDefaults는 복잡한 데이터를 다루기엔 좀 부적합합니다. CoreData 혹은 SQLite 등의 데이터베이스를 사용하는 것이 일반적입니다.
      2. 이거는 라이브러리 혹은 서비스를 제공하는 쪽에서 지원해줘야 하는 것이므로, 서버를 직접 구현하는 것이 아니라면 선택권이 없다고 봐야하는게 맞지 않을까합니다. 아마 구글정도면 그렇게 하겠지만… Firestore가 증분만 싱크하는지 알아보셔야 할 것 같아요 🙂 로컬 캐싱을 하는지도요.
    • Matthew So
      참가자
      • 글작성 : 2
      • 답글작성 : 3

      답장 감사 드립니다!

      Core data를 시도해 보겠습니다. 그리고 파이어스토어의 로컬 캐싱이나 증분만 싱크하는지 여부도 확인하겠습니다.

      제게 딱 필요했던 조언이었는데, 야곰님은 항상 핵심을 알려주시는 것 같아요:)

       

      궁금한 것 생기면 또 오겠습니다!

    • 야곰
      키 마스터
      • 글작성 : 37
      • 답글작성 : 579

      하하, 아는게 별로 없어서 그렇죠 뭐 ^^;
      해당 내용 궁금한 점 해결하고 여기 글 남겨주시면 다른 분들에게 큰 도움이 되지 않을까합니다.
      자주 들러주세요 🙂

5 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom