전체 글
-
네이버 지도 SDK 사용하기Android 2025. 6. 1. 22:30
안녕하세요~ 6월의 시작이네요. 점점 여름이 다가오는 듯 합니다.오늘은 숙소를 표시하기 위해 필요한 네이버 지도를 연동하는 방법을 알아보겠습니다! 😀1. 네이버 클라우드 플랫폼에서 애플리케이션 등록하기 먼저 네이버 클라우드 홈페이지를 접속한 다음, 로그인을 해줍니다. 그 다음에는 콘솔창을 누릅니다. 네이버에서 다양한 서비스를 제공해주는데요. 저희는 네이버 지도가 필요하기 때문에 Application Services 에서 Maps 를 선택합니다. 하단의 이용 신청을 눌러주고 이후에 나오는 어플리케이션 등록 버튼도 눌러줍니다. 여기서는 Application 에 대한 정보를 기입해야 합니다. Application 이름, API 선택, Android 앱 패키지 이름이 필요합니다. API 선택은 꼭 Dynam..
-
MVI 디자인 패턴Design Pattern 2025. 5. 18. 22:54
안녕하세요~ 오늘은 디자인 패턴 중 MVI 패턴에 대해 알아보겠습니다.MVI 패턴이란?MVI 는 Model + View + Intent 를 포함하는 아키텍처 패턴을 의미합니다. GUI 프로그래밍에서 주로 언급되는 패턴이고, 3개의 키워드로 나누는 것은 관심사 분리를 위한 것입니다. Model 은 UI의 상태를, View 는 UI 를 의미합니다. 안드로이드 뷰, 컴포즈가 이에 해당합니다. Intent 는 사용자가 화면을 클릭해서 데이터를 로딩하거나 다른 화면으로 이동하는 의도를 의미합니다. 안드로이드 컴포넌트를 실행하는 인텐트와는 다른 개념입니다. MVI 는 순수함수 사이클을 갖습니다. Intent 함수의 호출 결과가 model 함수의 파라미터로 전달되고, model 함수의 호출 결과가 view 의 인수로..
-
카카오 로그인 기능 구현하기Android 2025. 5. 11. 21:29
안녕하세요~ 오늘은 카카오 로그인 기능에 대해서 다뤄보려고 합니다! 작년에 해커톤을 나갔을 때 카카오 로그인을 사용하지 않고 백엔드에서 자체 서버를 구현했었는데 이와 관련한 심사위원 피드백이 생각났습니다. 어뷰징(abusing), 즉 자체 로그인 시스템을 쓰면 한 사람이 여러 개의 계정을 만들어 댓글을 조작하는 등 악의적인 행위를 할 수 있다고 합니다. 따라서 이번에는 피드백을 반영하여 자체 서버를 사용하지 않고 카카오, 네이버, 구글 API 을 이용해보기로 했습니다. 1. 애플리케이션 추가하기 먼저, 해당 url 의 홈페이지에 접속한 다음 카카오 계정으로 로그인을 합니다. 이후에는 '내 애플리케이션'을 클릭합니다. 그 다음엔, 애플리케이션 추가하기를 클릭해줍니다. 그 다음엔 해당 화면이 뜨는데요. 엡..
-
하단 내비게이션 바(BottomNavigationView)Android 2025. 5. 4. 22:28
안녕하세요! 오늘은 캡스톤 진행을 하면서 꼭 필요한 UI 요소 중 하나인 BottomNavigationView 에 대해 소개하겠습니다. 저희 팀은 일차적으로 메인 대시보드 화면을 이렇게 만들어 보았습니다. 그 중 초록색 영역으로 표시한 부분은 하단네비게이션뷰(BottomNavigationView)라고 합니다. 안드로이드 공식 문서를 한번 살펴보겠습니다. 1) 정의"Represents a standard bottom navigation bar for application" → "애플리케이션용 표준 하단 내비게이션 바를 나타낸다" 2) 사용하는 이유 및 제한 요건"Bottom navigation bars make it easy for users to explore and switch between top-..
-
알람 기능 구현하기(AlarmManager)Android 2025. 4. 27. 22:10
안녕하세요! 오늘은 알람 울리는 기능에 대해서 한번 알아보고자 합니다 🙌알람 기능을 구현하기 위해서는 안드로이드 4대 컴포넌트 중에 액티비티, 브로드캐스트 리시버, 서비스 가 필요합니다. 하나씩 짚어보겠습니다!1. AlarmManager 에서 BroadcastReceiver 등록// AlarmSettingFragmentval alarmManager = requireContext().getSystemService(Context.ALARM_SERVICE) as AlarmManagerif(alarmManager.canScheduleExactAlarms()) { val intent = Intent(requireContext(), AlarmReceiver::class.java) val pending..
-
클린 아키텍처 파헤쳐보기Clean Architecture 2025. 4. 20. 22:25
안녕하세요! 이번에는 저번에 소개한 클린 아키텍처에 대해 좀 더 깊게 파헤쳐보도록 하겠습니다! 혹시 어플 사용하실 때 시간이 지남에 따라 UI 가 조금씩 바뀌는걸 체감하시나요? 이처럼 UI 는 디자이너나 앱 사용자의 요청으로 쉽게 변할 수 있는 부분입니다. 따라서 UI 를 격리하는 부분, 이에 초점을 맞춘 디자인 패턴이 고민거리였습니다. MVP, MVVM, MVI 등 여러 디자인 패턴 등이 언급되었고, compose 같은 선언형 UI 도 등장했습니다. 앱의 규모가 커질수록 아키텍처 설계에 대한 중요성이 커지게 되어 이에 대한 관심도가 높아졌습니다. 안드로이드 공식 문서에서도 앱 권장 아키텍처를 소개하고 있습니다. 여기서는 UI, Domain, Data 로 세 개의 계층으로 구분합니다. UI 계층은 데이터..
-
클린 아키텍처 소개Clean Architecture 2025. 4. 6. 16:30
안드로이드에서 중요한 개념인 클린 아키텍처에 대해 소개해보고자 합니다.클린 아키텍처란?클린 아키텍처는 소프트웨어의 구조를 설계할 때 지켜야 할 원칙과 방법을 의미합니다. 관련 다이어그램을 살펴볼까요? 클린 아키텍처는 여러 계층으로 나누어져 있는데요. 먼저 의존성 규칙과 모듈의 의미에 대해 먼저 알아보겠습니다. 의존성 규칙과 모듈각 계층은 바깥에서 안쪽 방향으로 의존합니다. 따라서, 외부는 내부를 알 수 있지만 내부는 외부에 대해서 알지 못합니다.그리고, 외부의 변경사항이 내부에 변경을 주면 안됩니다. 모듈에는 고수준 모듈과 저수준 모듈이 있는데요. 관련해서 표로 정리해보았습니다. 고수준 모듈저수준 모듈핵심적인 비지니스 로직 (추상화)상세한 기능 구현변경사항 거의 없음변경사항이 잦음동심원 안쪽동심원 바깥..
-
서버와 통신하기(retrofit)Android 2025. 3. 16. 22:34
띡띡띡... 오늘의 할일 작성 완료! 😎 어? 근데 데이터가 어떻게 저장이 되는걸까?🤔 사용자가 입력한 데이터는 어떻게 저장이 될까요?크게 내부 저장소와 외부 저장소로 나뉠 수 있는데, 데이터양이 많을 경우에 더 적합한 외부 저장소, 즉 서버에 데이터를 저장하는 방법에 대해 다뤄보고자 합니다. 안드로이드에서는 이를 위해 retrofit 을 주로 많이 사용합니다. 한번 하나씩 파헤쳐 보겠습니다! 1. retrofit 의존성 추가retrofit 을 사용하기 위해서는 먼저 관련된 의존성을 모듈 단위의 build.gradle 에 추가해야 합니다.implementation("com.squareup.retrofit2:retrofit:2.9.0")implementation("com.squareup.retrofit..