본문 바로가기

안드로이드

(161)
[AOS] Room 사용시 이미지 비트맵으로 저장하기 이미지 저장시 Bitmap으로 저장하면 백업 파일을 만들어 디바이스간 데이터 이동 기능을 구현할 수 있습니다. 저는 백업 기능을 염두에 두지 않고 작업하다 보니 앱 내부 스토리지에 저장된 이미지의 경로를 저장하는 방식을 사용했습니다. 앱 전용 내부 디비가 있어서 사진첩에서 사진을 지워도 이미지는 보존되지만 앱을 삭제하면 되돌릴수 없기 때문에 필요에 맞게 선택하시면 될것 같습니다. Plant Table @Entity(tableName = "plant") data class Item( @PrimaryKey(autoGenerate = true) var id: Long? = null, var name: String = "", var nickName: String = "", var image: Bitmap? = ..
[AOS] 서드파티 앱을 이용하여 이메일 전송하기 & 앱내 문의하기 기능 구현 제가 운영하는 개인 앱에는 이용하면서 겪은 불편함을 이메일을 통해서 받구 있습니다. 별도 페이지를 작성해서 자세한 정보들을 받을 수도 있지만 서버를 별도로 운영하지 않기 때문에 이메일 방법을 선택했고, 생각보다 많은 사용자들이 불편함과 건의사항들을 보내주셔서 다음 개발 기능 및 예상치 못한 버그들을 잡는데 유용하게 쓰고 있습니다. 아직 구현하지 않으신분들은 구현을 강력 추천합니다! 이메일 전송 기능 실제 운영중인 앱에 캡쳐 화면으로 '[개발자에게 문의하기]'를 클릭 했을때 사진입니다. 문의시 받는 이메일 주소와 제목이등 필요 내용을 자동으로 입력된 상태로 사용자에게 노출됨으로써 불편함을 최소화 했습니다. private fun sendInquiryEmail() { try { var intent = Inte..
[AOS] Retrofit Response 동적 파라미터 Type으로 받기 서버 통신 응답 결과를 저장하는 DTO를 생성할땐 일반적으로 타입과 이름이 명시적입니다. data class UserRes( val email: String?, val name: String? ) 하지만 어떤 타입인지 모르거나 필드명을 모를 경우엔 어떻게 해야할까요? 서버측에서 필드명과 값들을 String으로 통일시켜서 내려주면 String으로만 받아서 사용하면 되지만 운영하는 서비스가 앱 포함 여러가지일 경우, 개발 스타일등의 이유로 저처럼 다이나믹한 결과값을 대응해야 하는 경우가 있습니다. 예를들어 유저가 종류가 다양하여 직군 별로 테이블에서 필드명을 관리한다고 가정했을때 각 직군 별로 있는 일치하는 필드가 있고 그렇지 않은 필드들이 있을 수 있습니다. 그렇기 때문에 데이터를 응답받을땐 직군별 필드키..
[AOS] GA4 적용하기 - 개념 GA(Google Analytics)는 많은 기업에서 사용자의 패턴을 분석하고 마케팅 효과를 확인하는등의 용도로 사용중입니다. 저도 기존에 사용중이였지만 보다 똑똑하게 사용하기 위해 공부한 내용을 공유하고자 포스팅합니다. ( 공부한 내용을 정리하는 포스팅이다보니 부정확한 정보들이 많을 수 있습니다. 참고해서 봐주세요 ) 틀린 부분이 있으면 편안하게 말씀해주시면 정정하도록 하겠습니다. GA4란? 20년 10월쯤 새로 출시된 버전으로 기존버전은 UA(Universal Analytics) 로 칭합니다. GA4 vs UA GA4의 큰 변화는 데이터 구조와 데이터 수집 로직이 달라졌다. GA3는 세션 기반, GA4는 유저, 이벤트 기반입니다. 세션이란 ? 유저가 한번 방문을 하고 방문을 종료했을때 까지 시간을 의..
[AOS] SnackBar vs Toast 토스트나 스낵바는 가벼운 메세지를 유저에게 전달할때 주로 사용하는데 장단점이 명확해 상황에 맞게 사용하면 좋을것 같습니다. 로그인 화면에서 아이디를 입력하지 않고 로그인 버튼을 눌렀을때 '아이디를 입력해주세요' 와 같은 메세지를 전달할때 간략히 차이점 먼저 공유드리면 아래와 같습니다. 보다 세세한 내용은 밑에 서술된 내용을 참고해주세요 스낵바 토스트 화면 크기 변동시 위치 변화 유동적 고정적 클릭 이벤트 작동 여부 작동 비작동 노출 영역 현재 엑티비티 디바이스 화면 기본 사용 아래는 기본적으로 제공하는걸 사용했을때 사진입니다. 레이아웃이 다르지만 둘다 커스텀을 할 수 있어서 크게 신경쓰지 않아도 되지만, 노출되어 있는 상태에서 키보드가 호출됐을때 처리는 다릅니다. 스낵바는 화면의 크기가 변함에 따라 위치..
[AOS] - Fragment에서 layoutInflater 사용시 에러 layoutInflater는 안드로이드에서 View를 생성할때 사용합니다. Fragment나 Recyclerview에서 사용하거나 CustomView를 만들때 사용합니다. 사용시 겪었던 문제와 해결과정을 공유드립니다. Fragment에서 viewCreated시 커스텀탭을 생성하는 과정에서 간헐적으로 에러가 발생했습니다. 아래는 문제가 발생했던 코드의 일부입니다. val view = layoutInflater.inflate(R.layout.layout_tab, binding.layoutTab, false) view를 생성하기전에 context가 null인지 체크했는데도 'layoutInflater' 가 널인 경우가 간혹 있었습니다. 버그가 발생하지 않은 코드입니다. val view = LayoutInfla..
[AOS] Android Studio 'import Module' Error 구글 네이티브 광고를 구현할때 구글에서 제공하는 모듈을 추가해야하는데 ( 네이티브 포스팅은 링크 참고 ) [안드로이드/코틀린] 애드몹 네이티브 광고 기존에 포스팅한 애드몹 배너와 전면 광고에 이어 네이티브를 개발하다가 공식 문서가 업데이트 되지 않은 사항이 있어 간략히 정리 합니다. [안드로이드/Android] 애드몹 전면광고 달기 개인앱에 superwony.tistory.com 어쩐일인지 모듈을 추가할 수 없었다.... 왜 'Finish'가 클릭이 안되는거냐구 어려운것도 아닌데 검색해보니 스튜디오 에러라고 합니다. 범블비 버전에선 해결 됐구요 제가 사용중인 버전은 폭스로 다음과 같습니다. 해결 방법 스튜디오를 최신 버전으로 업데이트 하시면 깔끔합니다. 편안 자의나 타의나 스튜디오 버전을 체크해서 업데이..
[AOS] 카카오 애드핏 사용 개발자들이 알아야될 구글 정책 최근 구글로부터 '데이터 보안 양식 제출' 이라는 메일들을 발송해 조치를 권고 했었고 저 또한 관련 포스팅을 남겼었습니다. AOS - 데이터 보안 양식 제출 요 근래 '데이터 보안 양식 제출 하세요'란 메일을 구글로부터 받았습니다. ( 아래 사진 참조 ) 2월부터 앱 스토어 등록정보에 '데이터 보안 섹션'이 표시되는데 해당 내용을 4월까지 승인 받지 않 superwony.tistory.com 간략하게 Google Play에서 사용자가 앱을 다운로드하기 전에 앱에서 사용자 데이터중 어떤걸 수집하고 어떻게 공유 하는지 파악하고 앱을 선택하도록 하기 위함입니다. 갈수록 보안에 신경쓰고 있네요 아직 진행하지 않으신분들은 시간이 얼마 걸리지 않으니 제출하는걸 추천드립니다. 미루다가 업데이트에 맞춰 진행하려고 하면..