본문 바로가기
728x90

Android44

[Android] 하나의 앱에서 다중 FirebaseMessagingService 구성 가능 여부 배경회사에서 서비스를 개발하면서 문득 아래와 같은 의문이 들었습니다.안드로이드 프로젝트에는 FCM 메시지를 수신하는 FirebaseMessagingService()를 상속받는 클래스를 정의할 수 있는데 그렇다면 FirebaseMessaingService를 상속받는 다수의 클래스를 정의해 다른 Firebase 프로젝트에서 전송하는 FCM 메시지를 각각 다른 FirebaseMessagingService에서 수신해서 적절히 핸들링할 수 있을까? 위 의문에 대해 개인적인 결론을 내려보았습니다.우선, 기본적으로 하나의 어플리케이션 다수의 Firebase 프로젝트 사용 가능하고, 컴파일 과정 전 Application 클래스에서 초기화됩니다.// 어플리케이션에 하나의 Firebase 프로젝트를 사용하는 경우Fireb.. 2025. 3. 9.
[Android/Kotlin] Retrofit을 이용한 https통신에서 SSL 인증서 오류 해결방법 문제상황 안드로이드에서는 버전 9부터 네트워크 통신 과정에서 http 접근을 허용하고 있지 않습니다. 하지만 Manifest에 usesCleartextTraffic 속성을 true로 설정해주는 것만으로도 우회해서 http 접근이 가능하기 때문에 그동안 https://xxxx로 적용된 API 주소를 단순히 http://xxxx로 바꿔 요청하는 방식으로 개발했습니다. 하지만 이번 프로젝트에서는 서버에서 어떤 보안(?) 처리가 되어있는지 http 접근이 도저히 되지 않았습니다. javax.net.ssl.SSLHandshakeException: java.security.cert.CertPathValidatorException: Trust anchor for certification path not found. .. 2024. 1. 30.
[안드로이드] Android(Kotlin) 환경에서 지도앱으로 길찾기 연동하기(NaverMap, KakakoMap, T-Map) 개발 중인 Android 앱에 인앱에서 지도를 띄워주는 것이 아니라 외부 앱(네이버지도, 카카오맵, 티맵)으로 이동해 출발지와 도착지를 기준으로 길찾기를 바로 수행하는 기능을 구현하던 중 레퍼런스가 많이 부족하다고 느껴 한 번에 정리해두려 합니다. 이동하려는 앱의 설치 여부를 확인하고자 Intent와 URL Scheme을 이용합니다. 대부분 비슷한 방식으로 호출할 수 있지만 호출하는 URL 필드에 조금씩 다른 부분이 있습니다. 1. 네이버지도 (NaverMap) private fun searchLoadToNaverMap() { // 위도, 경도를 주소로 변환 val geocoder = Geocoder(requireContext(), Locale.KOREAN) val startLocationAddress .. 2023. 10. 30.
[안드로이드] BottomNavigationBar 메뉴 Item의 Ripple 효과 제거하기(Material 3) 스택오버플로우와 여러 블로그를 참고했을 때 레퍼런스에서 제시하는 방법은 제 상황에서는 해결되지 않았습니다. // 적용 X 가장 쉽게 볼 수 있었던 솔루션인데 Navigation의 Ripple은 그대로 남아있었습니다. (아마 디자인시스템 버전이 Material3로 올라가면서 Navigation에 Style을 적용하는 방식이 변경된게 아닐지 추측합니다,,) BottomNavigation 컴포넌트의 이런저런 속성을 건드려 보던 중 'itemActiveIndicatorStyle' 라는 속성을 발견했습니다. // 해결방법 코드에서 사용된 "@android:color/transparent"는 배경을 투명하게 해주는 의미이고, 다른 색상을 넣고 싶다면 자유롭게 color를 지정하면 됩니다. 깨끗하게 제거된 Navig.. 2023. 10. 24.
[안드로이드] Material CalendarView - 캘린더 제대로 커스텀하기(with. Range, Select, OtherDays, 주말 설정) 며칠 동안 삽질하면서 직접 커스텀한 캘린더입니다. 아무리 구글링을 해봐도 제가 이번에 만든 캘린더보다 실제 캘린더에 가깝고, 완성도 있는 커스텀 캘린더 샘플은 찾기 힘들었어요.. ;ㅅ; 캘린더 개발로 고통받는 다른 분들도 유용하게 사용하시길 바라며 공유합니다-! 😄😄 (사용된 컬러는 다크/라이트 모드 대응때문에 흑백으로 대비시키고 있지만 자유롭게 바꾸셔도 됩니다.) 어때요? 예쁘죠? 예쁘다해. 캘린더에서 날짜를 지정하고 기간을 설정할 수 있는 기능을 만들어야 했습니다. 이런저런 API와 안드로이드 OS에서 제공하는 캘린더 관련 라이브러리를 찾아보았지만 입맛에 맞는 라이브러리를 찾기 힘들더라구요.. 구현할 캘린더에서 필요한 두 가지 조건은 1. 기간 / 범위(Range) 설정이 가능해야 한다. 2. D.. 2023. 8. 24.
[안드로이드] Hilt에서 동일한 타입을 반환하는 경우: @Qulifier, public abstract static class singletonc implements ... , cannot be provided without an @Provides-annotated method. Hilt를 이용해 개발하던 중 다음과 같은 오류가 발생했습니다. public abstract static class singletonc implements ... cannot be provided without an @Provides-annotated method. 특히 단일 모듈에서는 문제가 없었지만 기존과 다른 URL 주소와 네트워크 통신을 하기 위해 @qulifier 어노테이션을 이용해 멀티모듈로 변경하는 과정에서 버그가 발생했습니다. 의존성을 주입하는 과정에서 Hilt는 동일한 타입의 객체가 여러개 반환되는 경우에 각각의 반환 타입을 어느 객체에 주입할지 명시해 주어야 합니다. 위 이미지에서 Retrofit 객체가 반환되는 메소드가 두 개이기 때문에 @Qulifier 어노테이션을 사용해 각각의 R.. 2023. 8. 12.
728x90
반응형