Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SplashView: 스플래쉬 로딩에서 데이터 Fetch #62

Open
kor-Chipmunk opened this issue Feb 26, 2020 · 1 comment
Open

SplashView: 스플래쉬 로딩에서 데이터 Fetch #62

kor-Chipmunk opened this issue Feb 26, 2020 · 1 comment
Assignees
Labels
enhancement New feature or request

Comments

@kor-Chipmunk
Copy link
Collaborator

배경

스플래쉬뷰가 로딩될 때 AccessKey가 존재한다면, 미리 네트워크 통신을 하면 더 빠른 사용자 경험을 누릴 수 있다.

구현할 것

  1. AccessKey 저장되었는지 확인하는 로직
  2. 사용자 정보 통신
  3. 답변 정보 통신
  4. 질문 정보 통신
  5. 앨범뷰 정보 통신
  6. 각 뷰에서 미리 가져온 데이터가 있다면, 그 데이터를 사용하도록 로직을 변경한다.

보충 사항

캐싱 기능도 생각해봐야할 것 같다.

메모

@kor-Chipmunk kor-Chipmunk added the enhancement New feature or request label Feb 26, 2020
@kor-Chipmunk kor-Chipmunk self-assigned this Feb 26, 2020
@kor-Chipmunk
Copy link
Collaborator Author

kor-Chipmunk commented Apr 14, 2020

기존 방식은 뷰가 나타날 때 API 통신을 했다. 뷰가 나타나기도 전에 API 통신을 하려면, 공용 데이터 저장소를 만들어야 할 것 같다. 로직은 다음과 같다.

데이터 Fetch 로직

  1. 스플래쉬 화면 입장
  2. 각 API 지점과 비동기 통신
    • 만약 모든 정보를 불러오는 것이 완료 되어야만 넘어간다면, UI/UX 적으로 현재 상황을 보여줄 필요가 있을 것 같다. 또는 비공개로 보여줄 수도 있다. 디자이너 분들과 협의할 부분인 것 같다.
    • 캐싱된 정보가 있다면, 스플래쉬 화면에서의 API 비동기 통신은 넘어간다.
    • 모든 정보를 불러오는 것이 필요하지 않다면, 기존 처럼 고정된 시간으로 로고를 보여주고 그 시간 안에 되는 정보들만 불러오는 것도 가능하다.
  3. 각 데이터 공용 저장소에 결과들을 저장한다.
    • 싱글톤 패턴으로 처음부터 객체가 생성되어 있다. 따라서 스플래쉬 화면 이후에서도 데이터 접근이 가능하다.
    • 만약 데이터 접근했을 때 데이터가 없다면, API 비동기 통신한다.
    • 각 저장소에는 현재 데이터 상태를 나타내는 상태 변수가 필요할 것 같다.
      1. Readable ( 읽기 가능 )
      2. None ( 현재 데이터에 저장된 것이 없음 )
    • 각 저장소에는 처음에 캐싱된 정보를 비동기로 가져온다. 캐싱된 정보가 있다면, Readable 상태로 변화한다. 없다면 None 상태로 변화한다.
  4. 각 화면에서 로컬로부터 캐싱되거나 스플래쉬 화면에서 비동기 통신으로 받아온 정보들로 화면을 구성한다.
  5. 비동기 API 통신으로 달라진 정보를 수정하고 화면에 반영한다.

QnA

  1. 하루에 한 번 데이터가 달라지는 질문 목록같은 경우, 캐싱할 필요가 전혀 없을 것 같다. API 통신만으로 진행하는게 좋을 것 같다. 이 때, 질문 카드의 데이터가 비었을 때 보여주는 화면 정보가 필요할 것 같다.
    • 저장소마다 어떻게 캐싱이 필요한지 안 필요한지, API 통신이 필요한지 안 필요한지를 쉽게 설정할 수 있을까?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant