[Android] AppLink 인앱 브라우저 호환 문제 처리
·
Android
들어가며앱을 개발하다 보면 "URL을 눌렀을 때 앱이 바로 열리게 하고 싶다"는 요구를 자주 듣습니다.이를 가능하게 하는 기술이 바로 `DeepLink`입니다. 최근 진행하고 있는 `보따리`라는 프로젝트에서도 초대 링크를 눌렀을 때 앱이 열리도록 `AppLink`를 적용했지만카카오톡이나 인스타그램 등 인앱 브라우저에서는 정상적으로 동작하지 않는 문제가 있었습니다.이 글에서는 DeepLink의 개념부터 AppLink가 등장한 이유,그리고 보따리 앱에서 이 문제를 어떻게 해결했는지를 차례로 정리합니다. DeepLink란?`DeepLink`는 말 그대로 "사용자를 특정 앱으로 이동시켜서 원하는 화면을 보여주거나, 사용자 액션을 유도하는 링크"입니다.웹의 URL처럼 보이지만 브라우저 대신 앱을 직접 실행시켜 특..
Build Logic으로 멀티모듈 공통 빌드 설정 효율적으로 관리하기
·
Android
프로젝트의 기능이 확장되면서 모듈 구조의 복잡도가 급격히 높아졌다.초기에는 단일 모듈(:app)로 시작했지만 기능별 책임을 분리하기 위해 멀티모듈 구조로 리팩터링을 진행했다.그러나 시간이 지날수록 공통 빌드 설정이 여러 모듈에 중복되면서 관리 포이트가 늘어나는 문제가 발생했다. 멀티 모듈 프로젝트 구조Stacko/ ├── app/ # Entry point (Application) ├── feature/ │ ├── home/ # 홈 화면 │ ├── search/ # 검색 기능 │ ├── detail/ # 상세 화면 │ └── settings/ ..
[Comopse] Android Compose Theme 살펴보기
·
Android/Compose
왜 Theme가 필요한가?안드로이드 개발에서 UI는 앱의 첫인상을 결정합니다.하지만 화면이 많아질수록 색상, 글꼴, 모서리 둥글기 같은 스타일을 각 화면마다 직접 지정하는 방식은 유지보수가 매우 어렵습니다. 이를 해결하기 위해 Compose는 Theme 개념을 도입하여 앱 전반에 일관된 디자인을 주입합니다.일관성: 버튼, 텍스트, 카드 등 공통 UI 컴포넌트가 동일한 스타일로 표현재사용성: 여러 화면에서 동일한 색상/글꼴/모양을 공유유지보수성: 브랜드 리뉴얼, 다크 모드 대응 시 코드 수정 범위 최소화특히 Compose는 Material Design 3(M3)를 기본 권장하며, MaterialTheme를 통해 색상, 글꼴, 모양을 한 번에 관리할 수 있습니다. MaterialTheme 살펴보기Materi..
[Compose] 한국 이름 입력을 위한 TextField 구현 (+천지인)
·
Android/Compose
한국에서 이름 입력 시, 천지인 키보드와 삼성 한손모아키 키보드의 호환성을 고려해야 합니다. 특히, 두 키보드에서 미들닷(ㆍᆢ)의 표현이 다르기 때문에 이를 적절히 처리하는 정규표현식을 사용해야 합니다. 정규표현식입력 필터링을 위한 정규표현식은 다음과 같습니다:val regex = Regex("^[가-힣ㆍᆞᆢㄱ-ㅎㅏ-ㅣ]*$") 이 정규표현식은 한글 문자(가-힣), 미들닷(ㆍ, ᆢ), 그리고 자음(ㄱ-ㅎ)과 모음(ㅏ-ㅣ)을 포함하여 오직 한국어만 입력받도록 설정합니다.미들닷(ㆍ)이 두 개인 이유는 삼성의 한손모아키에서 사용되는 미들닷(ㆍ)이 천지인과 다르기 때문에이를 모두 대응하기 위해 추가하였습니다. 예시 코드아래는 Compose를 사용하여 한국어 입력을 처리하는 KoreanTextField 컴포저블 ..
[Compose] SMS Retriever API - SMS 인증번호 자동입력
·
Android/Compose
Google Play Service에는 SMS 기반 확인 프로세스를 간소화하는 데 사용할 수 있는 두 가지 API가 있습니다. SMS Retriever APISMS User Consent API SMS Retriever API는 정말 자동화된 사용자 경험을 제공하므로 가능한 경우 사용하는 것이 좋습니다.하지만 메시지 본문에 사용자 정의 해시 코드를 입력해야 하며, 해당 메시지를 보낸 사람이 아니라면 이 작업을 하는 것이 어려울 수 있습니다. 메시지의 내용을 제어할 수 없는 경우(예: 앱이 앱 내에서 결제 거래를 승인하기 전에 사용자 전화번호를 인증할 수 있는 금융 기관과 협력하는 경우) 커스텀 해시 코드가 필요하지 않은 SMS User Consent API를 사용할 수 있습니다. 그러나 사용자에게 앱의 ..
[Compose] SnackBar Duration Custom
·
Android/Compose
SnackBar란? SnackBar는 간단한 메시지를 사용자에게 전달하는 UI 구성 요소로, 주로 아래와 같은 용도로 사용됩니다.정보 전달: 작업의 결과나 상태에 대한 피드백을 제공합니다.사용자 액션 유도: 사용자가 특정 작업을 수행하도록 유도할 수 있습니다(예: "취소" 또는 "다시 시도" 버튼 포함). SnackBar 구현하기 Android Compose에서 SnackBar를 사용하기 위해서는 `Scaffold`와 `SnackbarHost`를 이용해야 합니다.아래는 기본적인 SnackBar 구현 예제입니다.val scope = rememberCoroutineScope()val snackbarHostState = remember { SnackbarHostState() }Scaffold( snack..