[Background] 서버와 통신중일 때 에러가 나는 건 정말로 자주 일어나는 일이다. 데이터를 잘못 올려서 400 에러, 없는 API에 요청해서 404 아니면 그냥 서버 쪽에 에러가 발생해서 500 에러가 뜰 수도 있다. 에러가 발생하면 사용자한테 올바른 에러 메시지를 보여줘야 한다, 가벼우면 토스트 메시지, 심각하면 다이얼로그. 물론 안드로이드 코드에 어떤 방식으로 메시지를 보여줄지 미리 정해놓을 수 있지만 메시지나 방식을 바꾸려면 배포를 다시 해야 하는 문제점이 있다. 이걸 해결하기 위해 우리는 서버 에러와 관련된 정보를 다 서버에서 받아오는 방식으로 해결할 수 있다. 이번 글에서 사용된 프로젝트는 클린 아키텍처를 적용한 상태입니다. [기존 방식] 정말로 많은 방식이 있습니다. when문으로 일일..
Android
[Background] 왜 firebase remoteconfig을 사용하는지 의문이 들 수도 있는데 한번 예를 들어 보겠습니다. 서버스를 하고 있는데 갑자기 백엔드 서버의 주소가 바뀌면 바뀐 버전을 플레이 스토어에 올리고 사람들이 업데이트를 하길 바라야 한다. 이처럼 모바일에서 상수 관리는 매우 힘든 편에 속한다. 사람들은 업데이트를 잘 안 하기 때문에 사용자 전체가 바뀐 값을 가지고 있는 버전으로 업데이트하는 건 사실상 불가능하다. 그럼 백엔드에서는 원래 주소랑 바뀐 주소를 같이 운영하거나 아니면 원래 버전을 사용하는 사용자가 불편을 겪어야 한다. 이럴 때는 다른 백엔드 서버로부터 주소를 받아오는 방식으로 해결할 수 있지만, 모바일 개발자가 직접 서버에 대해서 배우거나 다른 사람들의 도움을 받아야 한..
[Background] 안드로이드 입문한지 얼마 안됐고 처음으로 큰 안드로이드 프로젝트를 진행하다 보니깐 릴리스 모드와 디버그 모드의 차이점을 크게 모르고 릴리스 모드에만 proguard을 켜놓고 설정을 안건든체 출시를 했었다. 심사에 통과하고 마켓에 올라온 앱을 다운 받아서 테스트를 해보니깐 네트워크 통신이 아예 안되고 앱이 제대로 작동을 안하는 경험을 해봤습니다. 처음에는 원인조차 몰랐지만 많이 조사를 해본 결과 proguard문제라는 것을 파악했지만 어떻게 수정해야 하는지 막막했었습니다. 대부분의 자료들은 모듈 한개일때의 경우만 설명을 했지 멀티 모듈일때는 모든 모듈에 proguard을 설정해야 하는 것인지 아니면 일부만 하면 되는 것인지가 잘 안나옵니다. 그래서 이번에 멀티모듈 환경일때 progu..
[Background] 프로젝트를 진행하면서 광고를 넣을 필요가 있어서 Google에서 제공하고 있는 광고 SDK인 Admob을 적용하려고 했습니다 그런데 문제가 그냥 평범한 배너형 광고를 사용하게 되면 최상단 최하단 같은 곳에만 적용이 되고 무엇보다 아래처럼 콘텐츠를 가리거나 디자인이랑 어울리지 않고 너무 동떨어진 느낌이 들었어요. 이 문제점을 Google에서도 파악해서 그런지 다른 대체 방안을 내는데 그건 바로 네이티브 광고입니다. 영어로 토종이라는 뜻을 가진 Native 답게 개발자가 직접 광고 UI를 디자인에 맞게 커스텀을 가능하게 만들어 줍니다. 이 글은 멀티 모듈을 다룬 글에서 사용된 프로젝트 위에 추가를 했습니다. 이 글에 사용된 버전들 Java 17 Gradle 8.0.2 kotlin 1..