Android/실전 회고 5

[Android/Kotlin] 딱 정리해, targetSdk 33 후 알림 권한요청 (Feat. 푸시 옵트인 작업)

안드로이드 13 이 등장하면서 targetSdk 버전을 올리는 것에 대해 고민이 많아졌다. 세분화된 미디어 권한이나, 구글 플레이 서비스 광고 ID 설정, 포그라운드 서비스, 알림 등등이다. 그 중에서 오늘은 알림, 특히 알림 권한 요청에 대해 글을 써보려고 한다. 마침 최근에 회사에서는 알림 옵트인 작업을, 사이드 프로젝트에서도 알림 관련작업을 하게 되어 비교적 생생하기 때문이다. (틀리거나 부족한 게 있다면 공유해주시면 정말 감사합니다.) Android 13 부터 알림은... Android 13의 알림은 옵트아웃 모델을 사용하는 이전 Android 버전에서 변경된 옵트인 모델을 사용 (출처: developers) 즉, 안드로이드 13부터 알림은 옵트인이라는 말이다. 안드로이드 12 이하는 옵트아웃(옵..

[Android/Kotlin] Jetpack Compose, Navigation component, BottomNavigation 사용하여 화면이동 세팅

사용하게된 계기 첫 회사 입사 후 일을 배우는 것에만 집중하다가, 더 많은 성창을 위해 사이드 프로젝트를 시작했다. 내 사이드 프로젝트의 목표는 기술 경험이 중점이었다. 그래서 회사에서 아직 활발하게 쓰지않는 새로운 기술스택을 사용하기로 했고, UI 툴킷으로 Jetpack Compose 는 내 사이드 프로젝트에서 필수 기술이 되었다. 초반에 컴포즈 공부하고 프로젝트 초반 세팅을 하던 와중에 네비게이션 가능인가? 였는데 역시나였다. 그렇게 Navigation - compose 를 사용하게 되었다. 단순 사용법 단순 사용법은 링크를 확인하는 게 좋을 것 같다. 아래 부터는 바텀 네이게이션을 통합하면서 했던 고민과, Destination 관리, 경로 관련 주의 점을 말하려고 한다. 공식문서 - Compose를..

[Android] Firebase 기반 채팅 구현 적용기와 앞으로의 계획 (MVVM)

[발단] 채팅 기능이 핵심이 되는 데이팅 앱 프로젝트를 맡게 되었다. 채팅을 어떻게 구현할지 다른 Ios, Server 담당 개발자 팀원과 많은 회의를 거쳤다. 주요 이슈는 채팅을 구현하는 여러 방법(유료 SDK, Firebsae, 자체 서버 등) 중에 Firebase 를 선택했다. 그 이유는 매우 저렴하고(여기서 유료 SDK 탈락) 자체 채팅 서버를 제대로 구축할 시간을 벌 수 있어(여기서 자체 서버 탈락) 부담이 줄기 때문이다. 핵심기능을 중심으로 MVP 를 만들어 피드백을 받고 발전시켜야 하는 상황에서 Firebase(특히 Firestore) 로 먼저 서비스를 진행하며 자체 채팅 서버를 구축하고 채팅 서버 마이그레이션을 진행하자는 게 주 요지였다. 그렇게 채팅 메시지는 Firestore 로 관리하고..

[Android/Kotlin] startForActivityForResult 가 Deprecated 라고? Activity Result APIs 를 써보자

[시작 전 반성] 한동안 Jetpack navigation 을 사용해서 프로젝트를 진행해서 startForActivityForResult 가 Deprecated 인지 몰랐다. (알게된 건 작년 여름쯤) Deprecated 라는 것은 더이상 개발되지 않고 사라질 수 있으니 사용을 지양하라는 의미로 알고 있어서 대체제를 찾았다. 찾아보니 Activity 를 시작하고 값을 받아오는 기능 뿐만 아니라 Permission 을 받아오는 기능을 깔끔한 콜백코드로 대체할 수 있어서 좋았다. 프로젝트에 치여 기록을 잊지말자는 반성으로 쓰기 시작해야겠다. 활동에서 결과 가져오기 | Android 개발자 | Android Developers 활동에서 결과 가져오기 개발자 앱 내의 활동이든 다른 앱의 활동이든 다른 활동을 시..

[Android] 도메인(패키지명) 변경에 주의할 점

프로젝트를 진행하다가 도메인 네임을 변경해야할 상황이 생겼다. 프로젝트를 만든지 얼마되지 않았다면 그냥 새로 파서 코드를 옮겨도 되겠지만 이미 상당부분 진행되어서 Refator - Rename 을 눌러서 바꿔주기로 했다. 하지만 작업하는 파일들의 상단에 위치한 만큼 수동으로 손 봐줘야 할 일이 생겼다. 모든 항목을 다 바꿔주지 않았을까 하는 안일한 생각을 했다가 'No matching client found for package name ~ ' 같은 에러나 패키지명이 업데이트 되지 않은 파일들에 대해 'can not find symbols' 같은 에러를 만나게 되었다. 패키지명 바꾸는 방법 Android Studio 좌측 'Project' 탭을 클릭하고 패키지를 클릭후 위 사진에서 module_basic..