현재 날짜의 월차 계산시, 어느 달에 속하는 월차인지 정확하게 계산 ( ex. 특정 달의 초가 이전달의 마지막주차에 포함되는 경우 )
설정 뷰 앱 설치 D-Day 문제 해결
앱 첫 시작시, 온보딩과 만다라트 뷰 사이 렌더링 이슈 해결
🤔 고민 내용
1. 앱 설치 D-Day 문제 해결
분명 제가 시간이 지났을때 D-Day가 증가하는것을 확인했었거든요. 근데 제대로 오르지 않는다는 이슈를 듣고.. 로직을 다시 봤는데 해당 로직을 실행하는 시점과 앱설치시간을 저장하는거 자체에 문제가 조금 있었더라구요. D-Day는 세팅뷰에서 나오니까, 여기서 "설치일을 저장하고 보여주면 되겠구나" 했는데, 앱을 설치해도 설정 페이지를 들어가기전까지는 설치날짜가 저장되지 않았고, 설치일을 저장할때의 Date 타임 기준이, 따로 설정을 하지 않았어서 디폴트로 UTC기준이더라구요. 즉 한국에서 시간이 자정이 넘어도, 미국에서 자정이 넘어야 카운팅이 1증가하는..
그래서 설치일도 다른 로직들과 똑같이 온보딩이 시작될때의 시간을 한국 시간으로 변환 -> 텍스트로 변환하여 저장하고,
설정 페이지에 들어갈때마다 Current시간과 저장되었던 앱 설치시간과 day를 비교해서 보여주는 방식으로 처리해놓았습니다.
2. 앱 첫 시작시 온보딩과 만다라트 뷰 사이 렌더링 이슈 해결
저번부터 앱을 처음 시작할때, 온보딩전에 다른 화면이 스쳐지나갔던걸 그냥 알고만 있고 무시했었는데, 오늘 이슈를 해결하면서 천천히 봤는데.. 온보딩을 띄우는 플로우를 한번 점검해야했었더라구요 ~ 일단 그 이슈가 무엇이었냐면,
온보딩이 뜨기전 짧은 텍스트가 있는 뷰가 스쳐지나가는게 보이시나요 ..? ㅋㅋ
이 화면입니다 ㅋㅋ 만다라트뷰에서 else에 해당하는 부분이 띄어졌다가 .fullscreen에 의해서 온보딩이 올라오는 플로우였는데.. else 부분을 고치면되려나하다가 TabbarManager에서 처리를 진행했습니다.
온보딩을 한번만 뜨게하는 Bool 변수를 기준으로, if else로 온보딩뷰가 뜨게할건지, 탭뷰가 뜨게 할건지요 ~
근데 이렇게하고 다음 이슈를 다 해결하고나서 PR올리기전에 점검을 하는데..온보딩의 첫화면에서 실행되는 함수인 루틴, 클로버, 앱설치 함수가 2번씩 실행되는겁니다 ?
실행시간보면, 같은 라인에있는 코드가 2번 실행됨...
찾아보니까 MandalartView에서 온보딩 Bool값을 들고있고, 기존에 .fullScreen 을 지우지 않아서 온보딩이 끝나고 렌더링이 되면서 데이터만 재실행되는것같았습니다~ 근데 이상한게 .. fullScree을 지워도 똑같더라구요 ? 한번 조금 더 원인을 파봐야겠습니다 ~
지금 처리해놓은 방식은, 일단 탭바매니저에서의 수정점은 이상이 없는것 같고, 이렇게 함으로써 만다라트뷰에서 온보딩Bool값과 fullscreen코드가 있을 필요가 없어서 지웠습니다. 그런데, Notifcation권한 요청이 온보딩Bool값에 의존하고있었더라구요? 음.. 이부분을 루디가 다른 변수에 의존하게 바꿔달라고 전달할까하다가 괜히 일을 더 주는것같아서, 기존에 온보딩AppStorage변수 대신에, 그냥 true인 @State변수를 만들고, 이 변수가 true일때만 한번 실행하고 false로 꺼주는걸로 처리해놓았습니다 ~
코드보고 확인부탁드립니다 ~ 😀😀😀
📓 Overview
🤔 고민 내용
1. 앱 설치 D-Day 문제 해결
분명 제가 시간이 지났을때 D-Day가 증가하는것을 확인했었거든요. 근데 제대로 오르지 않는다는 이슈를 듣고.. 로직을 다시 봤는데 해당 로직을 실행하는 시점과 앱설치시간을 저장하는거 자체에 문제가 조금 있었더라구요. D-Day는 세팅뷰에서 나오니까, 여기서 "설치일을 저장하고 보여주면 되겠구나" 했는데, 앱을 설치해도 설정 페이지를 들어가기전까지는 설치날짜가 저장되지 않았고, 설치일을 저장할때의 Date 타임 기준이, 따로 설정을 하지 않았어서 디폴트로 UTC기준이더라구요. 즉 한국에서 시간이 자정이 넘어도, 미국에서 자정이 넘어야 카운팅이 1증가하는..
그래서 설치일도 다른 로직들과 똑같이 온보딩이 시작될때의 시간을 한국 시간으로 변환 -> 텍스트로 변환하여 저장하고, 설정 페이지에 들어갈때마다 Current시간과 저장되었던 앱 설치시간과 day를 비교해서 보여주는 방식으로 처리해놓았습니다.
2. 앱 첫 시작시 온보딩과 만다라트 뷰 사이 렌더링 이슈 해결
저번부터 앱을 처음 시작할때, 온보딩전에 다른 화면이 스쳐지나갔던걸 그냥 알고만 있고 무시했었는데, 오늘 이슈를 해결하면서 천천히 봤는데.. 온보딩을 띄우는 플로우를 한번 점검해야했었더라구요 ~ 일단 그 이슈가 무엇이었냐면,
온보딩이 뜨기전 짧은 텍스트가 있는 뷰가 스쳐지나가는게 보이시나요 ..? ㅋㅋ
이 화면입니다 ㅋㅋ 만다라트뷰에서 else에 해당하는 부분이 띄어졌다가 .fullscreen에 의해서 온보딩이 올라오는 플로우였는데.. else 부분을 고치면되려나하다가 TabbarManager에서 처리를 진행했습니다. 온보딩을 한번만 뜨게하는 Bool 변수를 기준으로, if else로 온보딩뷰가 뜨게할건지, 탭뷰가 뜨게 할건지요 ~
근데 이렇게하고 다음 이슈를 다 해결하고나서 PR올리기전에 점검을 하는데..온보딩의 첫화면에서 실행되는 함수인 루틴, 클로버, 앱설치 함수가 2번씩 실행되는겁니다 ?
실행시간보면, 같은 라인에있는 코드가 2번 실행됨...
찾아보니까 MandalartView에서 온보딩 Bool값을 들고있고, 기존에 .fullScreen 을 지우지 않아서 온보딩이 끝나고 렌더링이 되면서 데이터만 재실행되는것같았습니다~ 근데 이상한게 .. fullScree을 지워도 똑같더라구요 ? 한번 조금 더 원인을 파봐야겠습니다 ~ 지금 처리해놓은 방식은, 일단 탭바매니저에서의 수정점은 이상이 없는것 같고, 이렇게 함으로써 만다라트뷰에서 온보딩Bool값과 fullscreen코드가 있을 필요가 없어서 지웠습니다. 그런데, Notifcation권한 요청이 온보딩Bool값에 의존하고있었더라구요? 음.. 이부분을 루디가 다른 변수에 의존하게 바꿔달라고 전달할까하다가 괜히 일을 더 주는것같아서, 기존에 온보딩AppStorage변수 대신에, 그냥 true인 @State변수를 만들고, 이 변수가 true일때만 한번 실행하고 false로 꺼주는걸로 처리해놓았습니다 ~ 코드보고 확인부탁드립니다 ~ 😀😀😀
📸 Screenshot