본문 바로가기

⛏️ | 개발 기록31

[Android] ConstraintLayout GuildLine으로 화면 구성하기 부트캠프 최종 팀 프로젝트 기록 12  서론지난 포스팅의 splash screen 구현 이후, 다양한 오류들을 해결하고 있는 중이다.지금까지 로그인에서 로그인 진행 후 main으로 이동하지 않은 오류를 해결하면서 로그인 진행 중 circular progress bar를 띄우는 디테일 작업을 진행하였고,Android 12 이하의 버전에서는 splash screen dependency가 잘 작동하지 않는 문제가 있어서 Activity로 splash screen을 구성하고, 로그인 기능을 약간 손보는 작업을 진행했다.위 2가지의 작업은 포스팅으로 쓰기에는 애매한 감이 있었는데, 이번에 한 것은 포스팅으로 쓰기 좋은 것 같아서 이번에 작성해보려 한다. 이번에는 settings 화면을 구현하였다.myPage에 들.. 2024. 9. 23.
[Android] SplashScreen Api를 이용해 로그인 여부 확인 부트캠프 최종 팀 프로젝트 기록 11  서론오늘의 구현 기능은 자동 로그인 기능이다.Firebase Authentication을 사용 중이기 때문에 현재 FirebaseAuth의 currentUser.uid가 null이 아니면 사용자가 로그인되어 있다는 뜻이기 때문에 이 경우에는 MainActivity로 이동하고, 아닐 때는 로그인이 필요하기 때문에 SignInActivity로 이동하게 하는 기능이다.이 기능은 현재 구현이 되어 있지만, SignInActivity의 onStart lifeCycle 함수에 구현되어 있기 때문에 사용자가 이미 로그인을 했어도 SignInActivity를 보고 MainActivity로 넘어가게 되는 아주 사소한 이슈가 있다.이 이슈를 해결하기 위해 Android 12부터 사용.. 2024. 9. 17.
[Android] Firebase Google One-Tap login으로 마이그레이션 부트캠프 최종 팀 프로젝트 기록 10  서론이번에 코드 수정 사항을 스캔하다가 눈에 보이는 것을 발견했다.바로 GoogleSignIn, GoogleSignInClient가 deprecated 되어 있는 것을 발견했다. 이와 관련해서 자료를 찾아보다가 Google에 새로 출시한 one-tap sign in이라는 것을 발견했다.이 로그인 방법은 기존의 방법에 비해 다양한 장점을 가진다.한 번의 클릭으로 로그인이 가능하다.새 사용자는 앱 안에서 쉽게 계정을 만들 수 있다.기존의 비밀번호에 의존하는 방식의 로그인이 아니기 때문에 관련 보안 위협을 줄일 수 있다.개발하는 입장에서도 기존의 방식보다 코드가 간소화되어서 편리해진다.위와 같은 장점이 있는데 안 쓸 이유가 없지 않은가?바로 사용해 보자.  Google .. 2024. 9. 13.
[Android] Kakao Login을 Firebase Authentication과 연결 부트캠프 최종 팀 프로젝트 기록 9  서론지난 포스팅과 연결된다.https://rkdrkd-history.tistory.com/244 [Node.js] Intellij, Vscode에서 Firebase Functions 개발을 위한 Node.js 프로젝트 세팅부트캠프 최종 프로젝트 기록 7  서론현재 kakao 로그인 기능을 구현하려 하고 있다.kakao login을 그냥 구현하는 게 아닌 firebase authentication과 연동해서 사용하려 한다.그러기 위해서는 firebase functiorkdrkd-history.tistory.com 지난 포스팅에는 firebase functions 개발을 위한 node js 환경 세팅까지 진행했다.오늘은 android에서 구현한 firebase funct.. 2024. 9. 12.
[Node.js] Intellij, Vscode에서 Firebase Functions 개발을 위한 Node.js 프로젝트 세팅 부트캠프 최종 프로젝트 기록 8  서론현재 kakao 로그인 기능을 구현하려 하고 있다.kakao login을 그냥 구현하는 게 아닌 firebase authentication과 연동해서 사용하려 한다.그러기 위해서는 firebase functions라는 기능을 사용해야 하는데, firebase functions를 만들기 위해 node.js 세팅을 해주어야 한다.vscode로 하는 방법이 가장 대중적이지만, 나는 intellij idea에서 진행해보려 한다.vscode로도 똑같이 따라서 하면 된다.  Node.js 프로젝트 세팅node.js 설치는 아래의 사이트에서 진행해 주면 된다.https://nodejs.org/en Node.js — Run JavaScript EverywhereNode.js® is.. 2024. 9. 11.
[Android] 앱 서비스 출시를 위한 개인정보처리방침 및 이용약관 작성하기 부트캠프 최종 팀 프로젝트 기록 7  서론이번 포스팅은 크게 뭐는 없고 이제 MVP를 구현해서 version 1.0.0의 출시를 앞둔 상태이다.출시를 앞둔 상황이면 필연적으로 개인정보처리방침과 이용약관이 필요하게 되는데, 이를 빠르게 작성하는 사이트의 사용 방법에 대해 간단하게 알려주고자 한다.  개인정보처리방침 및 이용약관 등 문서 자동 생성 사이트, Law form개인정보처리방침 및 이용 약관 등 문서를 자동으로 생성하는 사이트로는 law form을 사용하였다.https://lawform.io/ 국내 유일 법률문서 자동작성 · 서명 · 통합 관리 플랫폼모바일에서도 쉽고 간편하게 법률문서 자동작성 및 원스톱 전자서명 가능! 실시간 온라인 공유/수정으로 업무 효율은 UP! 클라우드 기반의 안전한 보관/관.. 2024. 9. 9.
[Android] runnable, handler를 이용해 현재 열려 있는 앱 감지 부트캠프 최종 팀 프로젝트 기록 6  서론이번에는 내가 맡은 기능의 마지막 기능인 허용 앱에 들어갔을 때, 다른 앱을 실행하게 되면 그걸 감지해서 overlay를 띄워주는 기능을 구현할 것이다.다른 앱을 실행하고 나면, 기존의 화면은 background 상태에서 계속 돌아간다는 점을 이용해서 별도의 Thread를 만들어서 현재 열려 있는 앱의 package name을 불러오는 작업을 진행할 것이다.  허용 앱을 실행했을 때, 다른 앱 실행 감지 기능 구현하기다른 앱 실행 감지를 위해서는 usageStatsManager를 이용해서 특정 기간 내의 앱 실행 기록을 구할 수 있다.실행 기록을 가져오는 함수를 만들고, 그 함수를 별도의 Thread에서 반복시켜서 실시간으로 현재 실행되어 있는 앱의 package.. 2024. 9. 5.
[Android] android에서 firestore의 데이터 업데이트 및 countdown timer 사용 부트캠프 최종 팀 프로젝트 기록 5  서론이번에 구현할 기능은 앱에서 다른 허용 앱을 실행했을 때, 사용 시간을 카운트다운 타이머로 측정 후, 우리 앱으로 복귀하면 남은 시간을 fireStore에 업데이트하는 기능을 만들어 보았다.  fireStore 데이터 업데이트fireStore 데이터를 불러오기 전에 먼저 카운트다운 타이머를 사용해서 앱의 사용 시간을 구해줄 것이다.먼저 허용 앱을 실행하게 되면, 허용 앱을 여는 동시에 타이머를 작동시켜서 사용 시간을 측정한다. 초기 시작 시간은 각 허용 앱에 설정된 시간(제한 시간)으로 지정한다.허용 앱을 사용하다가 우리 앱으로 돌아오게 되면, 타이머를 멈추고 타이머에 남은 시간을 fireStore에 업데이트한다.허용 앱을 쓰는데 제한 시간이 종료되었는데 우리 앱.. 2024. 9. 3.
[Android] clean architecture에 firebase 로직 적용하기 부트캠프 최종 팀 프로젝트 기록 4  서론팀원들과 UI 구성을 마무리 짓고 이제 본격적으로 기능 구현에 돌입했다.내가 맡은 기능은 디톡스 타이머가 작동 중일 때, 실행이 가능한 허용 앱들을 불러와서 정해진 시간만큼만 사용할 수 있도록 구현하는 것이다.정해진 시간만큼 사용하는 기능을 구현하기 전에, 실행이 가능한 앱들을 firestore에서 불러오는 작업을 먼저 진행하겠다.  fireStore 로직을 clean architecture로 구현하기clean architecture의 구조는 이 포스팅을 보는 사람들을 다 어느 정도는 알고 있다는 가정하에 간단하게 설명하겠다.clean architecture는 data, domain, presentation 계층으로 나뉘어 있고data에는 데이터를 저장할 data.. 2024. 8. 30.
[Android] custom NumberPicker를 string array와 함께 사용하기 내일배움캠프 최종 프로젝트 기록 3  서론어제까지는 BottomSheet의 height를 설정하기 위해 삽질한 것을 포스팅했는데,오늘은 Bottom Sheet에 NumberPicker를 써서 구현한 것을 포스팅해보려 한다.추가적으로 NumberPicker에 string.xml에서 정의한 string array도 함께 사용했다.  NumberPicker 구현우선은 NumberPicker에 사용할 전용 Theme를 만들어 보겠다.NumberPicker에서는 Picker의 text의 색과 size 등등 몇 개의 설정이 불가하기 때문에, Theme로 구현해 줘야 한다.textColor와 size 설정은 1, 2번째 줄에서 이루어지고, colorControlNormal은 NumberPicker에서 선택된 항목과 .. 2024. 8. 28.
[Android] Android에서 BottomSheetDialogFragment의 높이를 최대 높이로 설정하기 내일배움캠프 최종 프로젝트 기록 2  서론이번에는 UI 개발을 할 차례이다.나는 UI개발에서 마이페이지에 사용하는 bottomSheet들의 UI 구성을 맡았다.그리고 이미 구현되어 있는 bottomSheet 틀을 사용해서 구현할 것이다.sheet 틀은 xml로 이미 구현되어 있고, content 부분만 따로 xml로 구현해서 붙여주는 작업을 진행했다.bottomSheet UI의 height 설정 부분에서 삽질을 했던 과정을 글로 적어 보겠다.  BottomSheet를 최대 높이로 설정해서 만들기기존에는 BottomSheet를 최대 높이로 설정해서 띄우려면 BottomSheetBehavior를 사용해야 했다.원래 BottomSheetBehavior를 사용해도 되지만, bottomSheetDialogFrag.. 2024. 8. 27.
[Android] Android의 Gitignore 설정으로 commit 제한하기 내일배움캠프 최종 프로젝트 기록 1  서론이제 기획이 어느 정도 마무리되고 본격적으로 개발을 시작한다.프로젝트의 주제는 cosmic detox로, 우주를 콘셉트로 하는 디지털 디톡스 앱을 만들기로 했다.그전에 먼저 초기 세팅을 진행하고 있다. 내가 맡은 초기 세팅은 패키지 구성 및 gitignore 설정, firebase와의 연결이다.그중에서 gitignore 설정 관련해서 포스팅을 남겨 보려 한다.이 포스팅에는 gitignore 설정 및 적용 방법을 적어 보겠다.  Gitignore.gitignore 파일은 commit 되는 모든 파일들 중에 특정한 파일들을 commit에서 제외시켜 버리는 역할을 하는 파일이다.gitignore 파일을 이용해 프로젝트에서 안 쓰이는 파일들을 제외시켜서 버전 관리를 용이.. 2024. 8. 26.
[Android] RecyclerView의 Infinite scroll 적용하기 (2) 내일배움캠프 앱 개발 심화 팀 프로젝트  서론대부분의 API들은 수많은 검색결과를 불러와야 할 때, 한 번에 불러오는 게 아닌, page query 파라미터를 추가로 이용해서 조금씩 데이터를 불러오도록 처리한다.이런 형식으로 데이터를 불러오는 이유는 많은 데이터를 여러 페이지로 나누어서 로딩 속도를 개선하고 사용성을 좋게 하기 위해서이다.이는 기본적인 내용이긴 하지만 그냥 써봤다. page 파라미터로 나뉘어 있는 검색결과들을 Android에 무한 스크롤을 적용해서 끝없는 데이터를 계속 불러올 수 있도록 만들어 보자.  무한 스크롤무한 스크롤은 우리가 자주 사용하는 instagram, youtube처럼 스크롤을 계속 내려도 데이터가 계속 나오는 것을 뜻한다.무한 스크롤을 구현하기 위해서는 첫 데이터가 re.. 2024. 8. 19.
[Android] ViewModel과 UiState를 이용해 상황에 맞는 화면 띄우기 (1) 내일배움캠프 앱 개발 심화 팀 프로젝트 서론이제 본격적으로 부트캠프에서 앱 개발하고 나서 발생한 문제의 해결 과정과 새로 알게 된 기능 정리 및 알고 있던 개념 복습 차원에서 개발 기록 포스팅을 남기도록 하겠다.기능 개발이 끝나고 나서 포스팅을 작성할 것이기 때문에 매일 올라오지는 않는다 :)  UiState란?uiState는 자신이 직접 state를 만들어서 현재 앱이 어떤 상태인지 직접적으로 알 수 있게 해주는 역할을 한다.대체로 UiState는 sealed class를 이용해서 구현한다.sealed class SearchUiState { data class Success(val searchResultModel: SearchResultModel): SearchUiState() data ob.. 2024. 8. 16.
[Android, Kotlin] 카테고리 기능 구현 (17) 이번 포스팅에서는 마지막 기능인 카테고리 기능을 구현한 것에 대해 포스팅을 하려고 한다.꽤나 오래 걸렸는데, 내가 천천히 개발한 것도 있고 카테고리를 만들면서 다른 UI적 요소와 기능들이 추가되어야 했기 때문에 오래 걸렸던 것 같다. 바로 내가 어떻게 카테고리 기능을 구현했는지 간단하게 알아보도록 하자.간단히 알아볼 예정이라 코드에 대한 설명이 미흡할 수 있다..! 1. 카테고리 화면 생성우선은 먼저 카테고리 화면을 생성해 주었다.카테고리 화면에서는 자신이 생성한 모든 카테고리를 볼 수 있고, 카테고리를 수정하거나 삭제할 수 있도록 만들어 주었다. @Composablefun CategoryScreen(categoryViewModel: CategoryViewModel = viewModel()) { . . .. 2024. 5. 11.
728x90