EveryDiary - 온보딩화면 구현

ulls12·2024년 3월 20일
0

Swift TIL

목록 보기
55/60

대부분의 앱들은 처음 앱을 가동했을 때, 앱에 대한 전반적인 설명과 함께 시작하는 버튼으로 온보딩화면을 구현한다. 사실 우리는 모든 기능들이 직관적으로 보이기 때문에 온보딩 화면은 필요가 없었으나, 익명계정 로그인 관리를 위해 온보딩화면이 필요하다 판단을 내렸다.

로그인 로직

  1. 사용자가 일기 앱을 실행한다.
  2. 일기를 작성한다.
  3. 일기 작성 완료 버튼을 누를 때, 비로그인 상태에서 익명 계정으로 자동 전환되고 익명 계정 상태가 된다.
  4. 익명 계정에서 소셜로그인으로 최초 로그인 시, 익명 -> 소셜 계정으로 자동 전환이 된다.

문제 발생 로직

  1. 소셜로그인 사용자가 로그아웃을 한다. -> 비로그인 상태
  2. 비로그인 상태에서 일기 작성 버튼을 누르면 새로운 익명 계정이 생성된다.
  3. 생성된 익명 계정으로 기존에 있던 소셜 계정으로 로그인 시, 전환이 되지 않고 그대로 익명계정이 유지된다. ( Firebase에서 이미 존재하는 계정이므로 전환을 거절한다.)
  4. 문제는 익명계정은 로그아웃하는 로직을 만들어놓지 않았다. -> 새로운 소셜 계정이 아닐 경우, 영원히 익명계정 상태

해결 방안이라고 생각했던 것들...

  1. 익명계정에서 로그아웃 기능을 만드는 것은 어떤가?
    문제는 한번 로그아웃을 하면, 영원히 로그인 할 수 있는 유령계정이 된다. 왜냐? 아이디, 비밀번호 없이 무작위로 생성된 UUID만을 취급하여 만들었기 때문에
    -> 불가

  2. 로그 아웃의 기능을 없애고, 회원 탈퇴만 구현
    가장 유력한 후보이긴 했다. 다만, 의견이 나왔던 것 중에 일기의 종류가 다양하여 계정을 여러개 쓰는 사람들은 어떻게 하냐? 는 말에 처음엔 어리둥절 했다. 근데 실제로 찾아보니 일기 계정을 2~3개 만들어서, 하나는 자신의 감정을 담은 일기, 다른 하나는 반려묘, 반려견에 관한 관찰일기, 마지막으로 커플일기 등등 나눠서 쓰는 분들이 적지 않았다.
    -> 불가

  3. 온보딩 화면 구현
    온보딩 화면을 만들어 시작하기 버튼을 누를 때, 익명 계정이 생성되도록 하는 것이다. 그렇게 되면, 로직이 달라진다.
    a. 사용자는 시작하기를 누르면 익명계정이 생성된다.
    b. 익명 계정을 사용하다 소셜 계정으로 전환하는데도 문제가 없다.
    c. 소셜 계정을 로그아웃하고, 일기를 작성해도 데이터베이스에는 등록이 되지 않는다.
    why? 비로그인 상태이기 때문이다. 대신, 일기를 작성해도 아무런 변화가 없다.
    -> 이렇게 단순하게 로직을 생각하고 온보딩화면을 뚝딱 만들었다.

온보딩 화면 로직의 문제점

  1. 사용자가 신규 핸드폰을 사거나, 핸드폰이 두개일 경우 무조건 온보딩 화면을 마주한다.
  2. 기존에 사용하고 있던 앱을 옮기기 위해, 온보딩 화면에서 시작하기를 누르면 익명 계정이 생성된다.
  3. 소셜로그인 시, 똑같은 에러가 생긴다.
    결론적으로 사용자가 기기변경 시, 치명적인 에러가 생긴다는 것이다. 오히려, 작성 시 익명계정 생성이 사용자적인 관점에서 더 적은 에러를 만드는 아이러니가 발생한다.

결론

사용자가 익명 계정에서 소셜 계정으로 전환할 때, 기존에 사용하고 있는 소셜 계정이 있는 경우, 익명 계정이 삭제되고 ( 데이터 포함 ), 소셜 계정으로 전환하는 로직을 만들었다. 이게 최선인 듯하다. 아직까지는... 다만, 아직 Alert창으로 기존의 계정이 있으므로 모든 데이터가 소멸된다는 경고 문구를 만들지는 못했다. 실질적으로 사용자가 이미 사용하고 있는 소셜계정이 있으면, 보통 로그인을 먼저하지 않는가?.. 이런 디테일까지 신경쓴다고 어필하고싶지만, 개발자는 묵묵히 해야하는거겠지...

profile
I am 개발해요

0개의 댓글