목록Android (24)
nueijeel
세모반 AOS는 3명이 담당하고 있어서 각자 맡은 부분을 따로 구현하고 별다른 코드리뷰는 진행하지 않고 있다. 그래서인지 api 호출에 필요한 레트로핏 인스턴스 생성 코드도 화면별로 다 따로 만들어져있어서많은 코드가 중복되기도 하고,개발 서버와 운영 서버 도메인을 바꿔가며 테스트할 때 baseURL에 들어가는 값을 바꿔줘야하는 번거로움도 있었다. 이런 점을 해결하기 위해 Retrofit Client 클래스를 한 파일만 두고 공통으로 사용할 수 있도록 합쳐보았다. 우선 저 과정을 공통적으로 수행하게 하기 위해레트로핏 클라이언트 생성 시 매번 다르게 입력되는 api 인터페이스 클래스 타입을 제네릭을 사용해 일반화시켜야 했다. 제네릭(Generic)이란?제네릭은 클래스나 메서드, 프로퍼티를 정의..
서론 지난번 포스팅에서안드로이드에서 서버에 PreSigned URL을 요청해 AWS S3에 이미지를 직접 업로드 하는 과정을 정리해보았다. [Android] 안드로이드에서 PreSigned URL을 이용해 AWS S3에 이미지 업로드 하기 (1)세모반 프로젝트 배포 후 백엔드 개발자분께서 이미지 처리 로직 변경을 제안해주셔서 새로 구현한 방식에 대해 포스팅하려고 한다. 기존 이미지 처리 로직 기존에는 클라이언트에서 Post api를nueijeel.tistory.com 이후 post 및 patch, put api를 백엔드쪽에서 수정해주시면서 (api request body에 파일 대신 저장된 이미지 경로를 전달)안드로이드에서도 api가 구현된 부분을 수정하여 이미지 업로드 후 서버 통신으로 데이터를 전..
세모반 프로젝트 배포 후 백엔드 개발자분께서 이미지 처리 로직 변경을 제안해주셔서 새로 구현한 방식에 대해 포스팅하려고 한다. 기존 이미지 처리 로직기존에는클라이언트에서 Post api를 호출해 서버로 데이터를 전송하면 서버는 수신한 데이터를 처리해 aws에 직접 이미지를 업로드하는 로직이었다.(데이터 전송 형태는 multipart/form-data 형식으로 전달) 하지만 이 방식은 클라이언트가 서버에 api 통신을 요청하는 횟수가 많아질수록 서버 부하가 발생한다는 단점이 있다. 아직까지 세모반은 사용자가 많지 않은 상태라 위 방식으로 처리를 해도 큰 문제가 없지만, 애초에 앱 개발을 시작할 때 지속적으로 서비스하는 앱을 만드는 게 목적이었기 때문에추후에 사용자가 많아져 서버 통신량도 증가할 경우..
세모반 앱 버전을 업데이트 하면서 기존에 사용하던 서버 도메인을 개발 서버에서 운영 서버로 옮겼는데 그 이후로 일부 기기에서 업데이트 된 버전을 다운받으면 로그인 화면에 데이터 로딩 화면이 뜨는 현상이 발생했다. 데이터 로딩 화면은 홈 화면이 실행되고 서버 통신되는 시간동안 다른 요소를 클릭해서 발생하는 에러를 방지하기 위해 넣은 화면인데 로그인 화면에서 이 화면이 계속 뜬다는 건... 자동로그인을 처리하는 과정에서 이전 설치시 로그인했던 데이터가 남아있기 때문일거라고 추측했다 우선 정확한 원인 파악을 위해 앱을 다시 실행하고 로그를 살펴보니 홈 화면에서 최초로 유저 프로필을 받아오는 통신이 수행되고 401 코드를 반환받았다 401은 액세스토큰 만료 코드이기 때문에 이 코드를 반환 받으면 토큰 갱신을 위..
이전 포스팅에서 카카오 로그인을 구현하는 방법에 대해서 알아보았다. 2023.11.15 - [Android/공부] - [Android] 카카오 로그인 구현하기 (+ api key 숨기는 방법) [Android] 카카오 로그인 구현하기 (+ api key 숨기는 방법) 1. 안드로이드 developer 페이지 설정 https://developers.kakao.com/console/app 카카오 developers 페이지에서 로그인 후 '내 애플리케이션' 메뉴로 들어간다. 애플리케이션 추가하기 클릭 카카오 로그인을 사용 nueijeel.tistory.com 카카오톡이 앱에 깔려져 있으면 카카오톡으로, 깔려있지 않으면 카카오 계정으로 로그인되도록 콜백이 호출되도록 코드가 구성되어 있다. 그런데 실제로 테스트를..
이전에는 안드로이드 앱이 종료되었다가 다시 실행되었을때 데이터를 유지시켜 사용하기 위해서 SharedPreferences를 사용했다. Share Preference는 key - value 쌍의 구조로 데이터를 앱 내부에 xml 파일로 저장하기 때문에, 앱이 삭제되기 전까지 작성된 데이터를 유지할 수 있었다. 주로 앱 전역에서 사용해야하는 간단한 데이터(로그인 유저 데이터 등)를 저장하는 용도로 사용되어 왔다. 하지만 제한적인 데이터 형식으로 복잡한 데이터 구조를 다루기 어렵다는 점과 저장된 파일에 쉽게 접근이 가능해 보안에 취약하다는 점, 비동기 작업 처리 중 UI 스레드 차단으로 인해 ANR 발생 가능성이 높다는 점 등.. 많은 한계점이 존재했었다. 따라서 현재 안드로이드에서는 SharedPrefere..
프로젝트를 진행하다가 fab 클릭 시 나타나는 메뉴에 효과를 주고싶어 애니메이션 구현하는 방법을 공부해보았다. 실제로 안드로이드 개발자들이 실무에서 직접 사용하는지는 모르겠지만, 여러 효과들을 배치함으로써 더 풍부한 ux를 제공하는 데 도움이 될 것 같아 나중에도 미니 프로젝트에 사용할 수 있게 내용을 정리해두려고 한다. 안드로이드에서는 애니메이션을 위해 Animator 클래스를 지원한다.Animator 클래스는 기본적인 애니메이션을 제공하는 클래스들의 슈퍼 클래스로, 기본적으로 애니메이션을 시작하고 종료하는 역할을 한다. Animator 클래스의 대표적인 하위 클래스1. AnimatorSet: 지정된 순서대로 일련의 Animator 객체를 재생하는 데 사용2. ValueAnimator: 계산된 값들을..