이번 주차에 진행한 PR은 다음과 같다. 이번 주는 남은 회원 부분을 끝까지 완료하였고, 좋아요 한 여행지와 각종 버그들을 수정하는데에 시간을 할애하였다.
마이페이지에서 진행하는
회원 프로필 수정
부분은 아직 완료하지 못하였다. 그 외는 모두 마친 것 같다는 생각이 든다.
스프린트1에서 진행했던 점들이 생각보다 맘에 들었었는데, 팀원 분의 말씀과 기능 명세서에 남은 태스크의 양을 보니 속도가 낮아 프로젝트에 실패할 것 같다는 위기감이 들게 되었다..
+) 백엔드 분들의 API 작업속도 또한 고려해보니 프론트가 많이 뒤쳐지는 느낌이었다...
스프린트1 에서 진행한 카카오 로그인/회원가입 부분 때문이었다. 그래서 이번 주부터는 박차를 가하려고 했지만... 다시 회원이 발목을 잡게 되었다.
스프린트2 에서도 회원이 발목을 잡았다.
스프린트2 첫 날은 8주차 학습일지에 작성하였던, 회원탈퇴 부분을 연동하는 것으로 시작하게 되었다.
생각보다 API를 연동하는 데에는 많은 시간이 걸리지 않았는데, 계속해서 에러가 나는 것이었다.
원인은 헤더 이름이 틀렸던 것이었다 !!!
헤더 이름은 accessToken
으로 알고 있었는데, 알고보니 Authorization
이었던 것이다.. ㅠㅠ
그리고 그냥 accessToken
값을 전달하는 것이 아닌 Bearer
가 붙은 Bearer accessToken
을 전달해였던 것이었다. ㅠㅠ
회원탈퇴에서 사용하기도 하지만, 추후에 게시글 작성, 수정, 삭제, 회원 프로필 수정, 댓글 작성, 수정, 삭제 등등의 과정에서 Bearer Token 을 사용하기 때문에, 이 값을 DataStore에 저장하는 추가적인 작업도 진행하면서, DataStore 관련 코드들 리팩토링 또한 진행하였다.
그래도 이런 과정들을 진행함으로써, 헤더를 이용한 통신을 배우게 되어서 나름 뿌듯했다.
그리고 다음 고비인 MultiPart를 사용하여 프로필 이미지를 서버에 전달하는 작업을 진행하려 했지만, 다른 팀에서도 그렇고 스플래시 화면에 대한 버전 처리 작업을 먼저 하게되었다..
Android sdk 31버전 이하인 환경에서 앱을 실행하면 튕기는 버그였다.
원래는 아~주 옛날에 안드로이드 프로젝트를 진행할 때, 사용했던 방법인 Splash Activity의 레이아웃을 짜고, 그 액티비티를 실행하려고 했었는데, 생각보다 잘 안되어서 v31
이상 버전과, 그 이하 버전에 해당하는 themes.xml
파일에 스플래시 Theme을 등록해주었고, 이하 버전에서는 drawable의 layer-list 속성을 사용하여 스플래시 레이아웃을 만들어주어, windowBackground
속성으로 전달하는 방식으로 구현하였다.
생각보다 말은 간단해보이지만, 위와 같은 시행착오를 겪느라 이 부분에서도 많은 시간을 사용하게 되었다. 거의 하루를 사용한 것 같다.
기존에는 카카오 소셜 로그인 SDK에서 넘겨받는 imgUrl 값을 전달하는 방식으로 회원가입을 구현하였는데, 아무래도 회원가입하는 과정에서 갤러리에서 이미지를 가져오거나 할 때는 imgUrl을 전달하는 방식은 부적합하다고 생각이 들었고, 왜냐하면 카카오톡 프로필 사진을 넘기지 않는 회원도 있을 뿐더러, 카카오톡 프로필 사진을 넘기고 맘에 안들어서 갤러리에서 가져온 사진으로 수정하는 회원도 있을 수 있기 때문이다.
따라서, MultiPart 방식으로 이미지를 전달하는 방식을 공부도 해야했고,
다음과 같은 여러 부분들 또한 해결해야 했다.
카카오톡 프로필 사진을 그대로 적용할 때는 이제는 URL을 전달하는 것이 아니므로, 이미지 파일 형식으로 바꿔야 하는 작업
프로필 사진을 안 보내는 경우 <= 이 부분은 다음 주에 추가적으로 작업이 들어가야 한다..
현재는 MultiPart 부분에 null로 값이 전달되는데, 백엔드 분께서 imageFile이 null 값이면, 이미지를 제외한 정보만 전달하는 서비스 함수를 사용해서 전달해야 할 것 같다. MultiPart.isEmpty()로 확인을 해야 한다고 한다.
갤러리에서 받아온 이미지 URI 형식을 파일로 변환하는 작업
이미지 파일이 클 수 있으므로 이미지를 압축하는 작업
갤러리 권한 처리 <= 이 부분이 굉장히 까다로웠다.
이렇게 해서 회원 과정을 모두 마치게 되었고, 그 이후에는 회원 부분을 너무 과하게 진행하느라 나머지 스프린트1에서 작업하지 못했던 좋아하는 여행지 목록을 보여주는 여기 좋아
부분 UI 작업들을 진행하고, 팀원 분의 코드리뷰를 반영하는 작업을 진행하였다.
이 작업을 진행하면서 배운 점으로는 예전에 사용했던 방식으로는 ViewPager를 사용할 때, 모든 페이지마다 Fragment들을 추가해주었는데, 우리 앱 서비스에서 제공하는 여기 좋아 부분과 팔로우 부분에서는 같은 레이아웃을 사용하고 다른 데이터들을 보여주는 형식이었다.
이러한 부분은 페이지마다, RecyclerView에 다른 데이터를 전달하는 형식으로 해결하게 되었다. (페이지의 position 값을 Fragment의 Bundle로 전달하는 방식)
학습일지에 힘 빼지말자는 생각이 들었는데, 학습일지를 작성하면서 이번 주 내가 했던 작업들을 돌아보고 정리하는 시간이 되었던 것 같고, 내가 배웠던 점들을 다시 복기하면서 좀 더 잘 익히게 된 것 같다. 이제 진짜 회원 부분을 마쳤으니, 기존에 스프린트 1에서 작업하지 못한 부분, 그리고 스프린트 2에서 계획했던 부분들을 해결하기 위해서는 진짜 속도를 좀 내야할 것 같다. 이번 주 부터는 백엔드 한 분께서 서버를 배포해주신 노고 덕분에 주말에도 개발을 할 수 있어서 작업 속도를 조절할 수 있게 되어 너무 좋았다. 다음 주말에도 열개해야할 것 같당
- 유데미 바로가기 : https://bit.ly/3SFlXDy
- 유데미 STARTERS 취업 부트캠프 공식 블로그 보러가기 : https://blog.naver.com/udemy-wjtb
💡 본 후기는 유데미-웅진씽크빅 취업 부트캠프 2기 - 프론트엔드&백엔드 과정 학습 일지 리뷰로 작성되었습니다.