Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

반응형

모바일 앱(안드로이드) 429

개발일기: Wear OS Complication 클릭 시 앱 실행하기

🚀 개발일기: Wear OS Complication 클릭 시 앱 실행하기오늘 Wear OS Complication을 탭했을 때, 내가 만든 워치 앱이 실행되도록 하는 기능을 구현했습니다. 이 기능은 사용자가 워치 페이스에서 바로 앱으로 진입할 수 있게 해주는 중요한 인터랙션입니다.✨ 핵심 아이디어: `PendingIntent` 사용하기Complication을 클릭해서 앱을 실행하려면, Complication 데이터에 `PendingIntent`라는 특별한 객체를 연결해야 합니다. 이 `PendingIntent`는 사용자가 Complication을 탭했을 때 시스템이 내 앱의 특정 부분을 대신 실행해 줄 수 있도록 하는 '권한' 같은 것입니다.🛠️ 코드 수정 방법 (`MainComplicationSer..

Android | Jetpack Compose로 Photo Picker 구현 (백포트 없이)

📸 Android | Jetpack Compose로 Photo Picker 구현 (백포트 없이)개요 (Intro)오늘은 Android 13 이상을 대상으로 Jetpack Photo Picker를 백포트 없이 Compose로 구현해보았습니다. Google Play 서비스의 백포트 모듈을 사용하지 않고도 최신 API만으로 충분히 구현 가능하다는 점을 확인했습니다.📅 날짜: 2025.11.06🎯 목표: Jetpack Photo Picker를 Compose에서 구현🧰 기술: Kotlin, Jetpack Compose, Coil, Android 13+문제 정의 (Problem / Motivation)앱에서 사용자에게 저장소 권한 없이 사진을 선택하게 하고 싶었습니다. Android 13 이상에서는 Jetp..

개발일기: Wear OS Tile Chip 너비 문제 해결

🚀 개발일기: Wear OS Tile Chip 너비 문제 해결📌 1️⃣ 핵심 개념 정리핵심 개념설명추가 정보예시Wear OS TileWear OS 기기에서 빠르고 간결한 정보 제공 및 앱 실행을 위한 사용자 인터페이스 요소.SuspendingTileService를 통해 데이터 및 UI 제공.날씨 타일, 피트니스 통계 타일.Chip (ProtoLayout Material)Wear OS Tiles에서 사용되는 버튼 형태의 Material 컴포넌트. 짧은 텍스트와 액션을 포함.setPrimaryLabelContent, setWidth, setChipColors 등."앱 열기", "다음 노래" 버튼.Column (ProtoLayout)자식 요소들을 수직으로 배치하는 레이아웃 컨테이너.addContent, s..

🧠 Android | ViewModel에서 StateFlow로 상태 관리하기

🧠 Android | ViewModel에서 StateFlow로 상태 관리하기개요 (Intro)오늘은 기존에 사용하던 LiveData 대신 StateFlow를 이용해 UI 상태를 더 명확하고 안정적으로 관리하는 방법을 실험해봤습니다.📅 날짜: 2025.10.30🎯 목표: ViewModel에서 StateFlow로 UI 상태 관리하기🧰 기술: Kotlin, Jetpack Compose, Hilt, StateFlow, ViewModel 문제 정의 (Problem / Motivation)앱에서 LiveData를 사용할 때, 다음과 같은 문제가 있었습니다:화면 회전 시 상태가 재구성되지 않거나 중복 업데이트 발생MutableLiveData의 비동기 처리 시점 불일치Compose 환경에서 Flow 변환을 반복..

습관관리 앱 : 개발 일기, 인앱 업데이트, 코드 최적화, 그리고 험난했던 Gradle 플러그인 설정기

습관관리 앱 : 개발 일기, 인앱 업데이트, 코드 최적화, 그리고 험난했던 Gradle 플러그인 설정기 오늘의 목표: 사용자를 위한 편의 기능 추가와 Play Store 출시 준비!오늘은 앱에 두 가지 중요한 기능을 추가하고 출시 준비를 하는 날입니다. 하나는 사용자가 앱을 항상 최신 버전으로 유지할 수 있도록 '인앱 업데이트' 기능을 구현하는 것이고, 다른 하나는 출시를 위해 앱 용량을 줄이고 코드를 보호하는 '최적화' 작업입니다. 그리고 이 과정에서 예상치 못한 Gradle 플러그인 설정이라는 큰 산을 만났습니다. 그 험난했던 여정을 기록해 봅니다.1. In-App Update 구현하기사용자가 Play Store에 직접 방문하지 않아도 앱 내에서 업데이트를 확인하고 설치할 수 있게 하는 것은 사용자 ..

습관 관리 앱: 개발 일기, 광고 페이지 성능 개선 및 UI 리팩토링

습관 관리 앱: 개발 일기, 광고 페이지 성능 개선 및 UI 리팩토링 오늘은 기존에 구현했던 쿠팡 파트너스 API를 연동한 광고 페이지의 성능을 개선하고 전반적인 코드 구조를 다듬는 작업을 진행했다. 사용자가 앱을 더 쾌적하게 사용할 수 있도록 만드는 데 초점을 맞췄다.1. API 데이터 로컬 캐싱으로 성능 개선기존 광고 페이지는 화면에 진입할 때마다 네트워크를 통해 쿠팡 API를 호출하는 방식이었다. 이로 인해 이미지 로딩 시간이 길어졌고, 네트워크 상태가 좋지 않으면 사용자 경험이 저하되는 문제가 있었다. 이를 해결하기 위해 Room 데이터베이스를 사용하여 API 응답을 로컬에 캐싱하는 방식으로 변경했다.1.1. Room Entity 및 DAO 설정먼저 API 응답 데이터 클래스인 `BestProdu..

습관관리 앱 : Jetpack Compose 광고 페이지 개발 및 성능 개선기

Jetpack Compose 광고 페이지 개발 및 성능 개선기 오늘은 기존 습관 기록 앱에 쿠팡 파트너스 API를 연동하여 광고 상품을 보여주는 페이지를 개발하고, 사용자 경험을 개선하기 위해 이미지 로딩 성능을 최적화하는 과정을 거쳤습니다. 이 글에서는 전체 개발 과정과 마주쳤던 문제들, 그리고 해결 방법을 공유합니다.1. ViewModel 상태 관리 및 API 연동가장 먼저, API 통신 결과를 UI에 효과적으로 전달하기 위해 ViewModel에서 상태 관리를 구현했습니다. API 요청 상태를 Loading, Success, Error로 나누어 관리하는 AdProductState Sealed Interface를 정의하고, 이를 StateFlow로 UI에 노출시켰습니다.// MainViewModel.k..

습관관리 앱 구현 과정 : Jetpack Compose에서 TopAppBar 구현 과정, 동적 버전 표시 및 웹 연동

습관관리 앱 구현 과정 : Jetpack Compose에서 TopAppBar 구현 과정, 동적 버전 표시 및 웹 연동 Jetpack Compose를 사용한 안드로이드 앱 개발 중, 사용자에게 일관된 경험을 제공하기 위해 공통 TopAppBar를 구현한 과정을 공유합니다. 이 글에서는 TopAppBar에 앱 아이콘, 동적으로 가져온 앱 이름과 버전, 그리고 외부 URL로 연결되는 정보 아이콘을 추가하는 방법을 단계별로 설명합니다.1. TopAppBar 구현 위치 결정: MainActivity처음에는 각 화면(HomeScreen)에 TopAppBar를 추가할까 고민했지만, 앱 전체의 일관성 및 확장성을 위해 MainActivity.kt의 MainScreen Composable 내에 Scaffold를 사용해 ..

습관관리 앱 개발 일지: 대규모 리팩토링 및 기능 추가

습관관리 앱 개발 일지: 대규모 리팩토링 및 기능 추가 오늘은 '습관 추가 화면' 수정이라는 커밋 메시지 뒤에 숨겨진, Habit 앱의 대규모 구조 개선 및 기능 추가 작업을 기록합니다. 데이터베이스 설계부터 MVVM 아키텍처 도입까지, 앱의 내실을 다지는 중요한 변경이 있었습니다.1. 데이터 레이어(Data Layer) 대규모 개편이번 작업의 핵심은 데이터 모델을 확장하고 안정성과 성능을 개선하는 것이었습니다.습관 기록 기능 추가사용자가 매일의 습관 실천을 기록할 수 있도록 HabitRecord 엔티티와 HabitRecordDao를 새로 추가했습니다. 이를 통해 '어떤 습관을' '언제' 실천했는지 저장할 수 있게 되었습니다.데이터베이스 통합 및 안정화기존에 AppDatabase와 HabitDataba..

습관관리 앱, 개발 작업 일지

습관관리 앱, 개발 작업 일지 1. 하드코딩된 한글 문자열의 strings.xml 이전앱 내 하드코딩된 한글 텍스트를 strings.xml로 이동하여 다국어 지원 및 유지보수성을 개선함. 2. AlertDialog를 MaterialDialog로 변경기존 AlertDialog를 com.afollestad.material-dialogs 라이브러리의 MaterialDialog로 교체.다이얼로그의 테마와 색상 문제를 해결하기 위해 theme 속성 및 color.xml을 활용하는 방법을 검토함.3. 다이얼로그 색상 및 테마 적용MaterialDialog에서 배경색 투명 문제 발생 시, theme를 지정하거나 color.xml의 색상 리소스를 활용하여 해결.MaterialDialog의 md_title_color 등..

반응형