유데미 STARTERS(스타터스) 취업 부트캠프 2기 - 프론트엔드(Android, 안드로이드) 9주차 학습 일지

Delight Yoon·2022년 12월 11일
0

웅진X유데미 STARTERS

목록 보기
11/16
post-thumbnail

Week 9 - 스프린트2 시작


이번 주차에 진행한 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 속성으로 전달하는 방식으로 구현하였다.

생각보다 말은 간단해보이지만, 위와 같은 시행착오를 겪느라 이 부분에서도 많은 시간을 사용하게 되었다. 거의 하루를 사용한 것 같다.


MultiPart를 사용한 서버 이미지 전달

기존에는 카카오 소셜 로그인 SDK에서 넘겨받는 imgUrl 값을 전달하는 방식으로 회원가입을 구현하였는데, 아무래도 회원가입하는 과정에서 갤러리에서 이미지를 가져오거나 할 때는 imgUrl을 전달하는 방식은 부적합하다고 생각이 들었고, 왜냐하면 카카오톡 프로필 사진을 넘기지 않는 회원도 있을 뿐더러, 카카오톡 프로필 사진을 넘기고 맘에 안들어서 갤러리에서 가져온 사진으로 수정하는 회원도 있을 수 있기 때문이다.

따라서, MultiPart 방식으로 이미지를 전달하는 방식을 공부도 해야했고,

다음과 같은 여러 부분들 또한 해결해야 했다.

  • 카카오톡 프로필 사진을 그대로 적용할 때는 이제는 URL을 전달하는 것이 아니므로, 이미지 파일 형식으로 바꿔야 하는 작업

  • 프로필 사진을 안 보내는 경우 <= 이 부분은 다음 주에 추가적으로 작업이 들어가야 한다..
    현재는 MultiPart 부분에 null로 값이 전달되는데, 백엔드 분께서 imageFile이 null 값이면, 이미지를 제외한 정보만 전달하는 서비스 함수를 사용해서 전달해야 할 것 같다. MultiPart.isEmpty()로 확인을 해야 한다고 한다.

  • 갤러리에서 받아온 이미지 URI 형식을 파일로 변환하는 작업

  • 이미지 파일이 클 수 있으므로 이미지를 압축하는 작업

  • 갤러리 권한 처리 <= 이 부분이 굉장히 까다로웠다.

    • 먼저, 코드를 찾아본 후 이해하는 데에도 꽤 시간이 걸렸을 뿐더러
    • 허용 안함을 두 번 하게 되면 Android에서는 영구 거절이 되므로, 다시 requestPermission이 동작하지 않는다. 따라서 이러한 경우, 앱의 권한 설정으로 이동하게끔 예외 처리를 해줘야 했고,
    • 갤러리에서 선택된 이미지의 URI를 가져오는 과정이 갤러리에 저장 후, 그 URI값을 가져오는 것이라 URI 값을 받아온 후 갤러리에서 이미지를 다시 삭제하는 작업
    • 그리고 반복되는 코드, 이해가 되지 않은 코드를 리팩토링 한 이후에 권한 처리 부분이 다시 버그가 발생

여기 좋아 - 좋아하는 여행지 목록

이렇게 해서 회원 과정을 모두 마치게 되었고, 그 이후에는 회원 부분을 너무 과하게 진행하느라 나머지 스프린트1에서 작업하지 못했던 좋아하는 여행지 목록을 보여주는 여기 좋아 부분 UI 작업들을 진행하고, 팀원 분의 코드리뷰를 반영하는 작업을 진행하였다.

이 작업을 진행하면서 배운 점으로는 예전에 사용했던 방식으로는 ViewPager를 사용할 때, 모든 페이지마다 Fragment들을 추가해주었는데, 우리 앱 서비스에서 제공하는 여기 좋아 부분과 팔로우 부분에서는 같은 레이아웃을 사용하고 다른 데이터들을 보여주는 형식이었다.

이러한 부분은 페이지마다, RecyclerView에 다른 데이터를 전달하는 형식으로 해결하게 되었다. (페이지의 position 값을 Fragment의 Bundle로 전달하는 방식)


마무리

학습일지에 힘 빼지말자는 생각이 들었는데, 학습일지를 작성하면서 이번 주 내가 했던 작업들을 돌아보고 정리하는 시간이 되었던 것 같고, 내가 배웠던 점들을 다시 복기하면서 좀 더 잘 익히게 된 것 같다. 이제 진짜 회원 부분을 마쳤으니, 기존에 스프린트 1에서 작업하지 못한 부분, 그리고 스프린트 2에서 계획했던 부분들을 해결하기 위해서는 진짜 속도를 좀 내야할 것 같다. 이번 주 부터는 백엔드 한 분께서 서버를 배포해주신 노고 덕분에 주말에도 개발을 할 수 있어서 작업 속도를 조절할 수 있게 되어 너무 좋았다. 다음 주말에도 열개해야할 것 같당

💡 본 후기는 유데미-웅진씽크빅 취업 부트캠프 2기 - 프론트엔드&백엔드 과정 학습 일지 리뷰로 작성되었습니다.

profile
Yoon's Dev Blog

0개의 댓글