안드로이드/팁 (52) 썸네일형 리스트형 [Android] OS 13 알림 권한 대응 기존 안드로이드 앱에서 Notification(푸시)를 유저의 동의 없이 띄울 수 있었지만 OS13 버전에 알람 권한이 새로 추가 됐습니다. ( 공식문서 ) 발 빠르게 적용 해야 하는 이유 ! 내부 저장소에 대한 권한과 같이 대응이 필요한 사항에 있어선 TargetSdk 버전에 따라 대응이 필요했지만 알림 권한은 유저 기기의 OS가 13인 경우 모두 해당 됩니다. 즉 대응을 하지 않으면 유저들이 알림을 받지 못합니다. 그나마 다행인 부분은 앱이 이미 설치되어 있던 유저들은 권한이 허용된 상태로 적용되어 있고, 신규로 설치하는 유저들만 권한 허용을 받아야 합니다. 언제 권한을 요청하면 좋을까요? 여러 앱을 사용하다 보면 알림 권한뿐만 아니라 모든 권한에 있어서 요청 시점이 재각각 입니다. 앱 실행시 모두 .. Android 그림자 색상 변경 먼저 그림자를 사용하는 이유는? 구글 머터리얼 가이드에 따르면 특정 뷰에 그림자 효과를 추가함으로써 집중도를 높일수 있다고 합니다. 실제로 구글이나 많은 앱에서 카드뷰의 형태나, 해당 화면의 핵심 기능을 하는 버튼의 경우 그림자를 추가해 사용자가 쉽게 포커싱 할수 있도록 합니다. 구글 스토어의 카드뷰 형태 ( 왼쪽 ), 제가 운영중인 식물 일기 앱의 식물 추가 버튼 ( 오른쪽 ) 우측 사진과 같이 뷰가 겹치는 경우 그림자 효과를 주지 않으면 버튼이라고 인식하기 어려워 유저에게 불편함을 줍니다. 그림자 속성추가 xml 코드 binding.llGoogle.elevation = 4f 적용 결과 그림자 색상 변경 outlineSpotShadowColor를 이용해 변경 가능합니다. 그 밖의 커스텀 안드로이드에서 .. [AOS] TextView 글자별로 줄바꿈 하기 Textview에 표현하는 글이 디바이스 크기나 앱 환경에 따라 한줄이거나, 두줄로 나뉠수 있는 경우 어떻게 보여질지 많은 고민을 하게 됩니다. 그 글의 특성에 맞게 적당하게 알아서 보여지면 좋겠지만 그렇지 않습니다. 적절하게 대응해야합니다. Textview는 줄바꿈을 할때 기본적으로 단어 단위로 끊습니다. var message = "긴 글을 보여주게 될 경우 단어 별로 끊기기때문에매우 어색해 보일수 있는데" binding.tvContent.text = message 극단적인 예로 위 코드를 실행하면 아래 사진처럼 노출되는데 '끊기기때문에매우'를 한 단어로 구분하기 때문에 첫번째 줄에 많은 여백이 발생해 조금 어색해 보일 수 있습니다. 하지만 문장의 공백을 '\u00A0' 문자로 치환하여 출력하면 아래 .. 애드핏 광고 Fill-Rate 이슈 일지 2편 일전에 애드핏 광고 Fill-Rate 저하로 인한 광고 수익 박살로 초조한 날들을 보냈습니다. 제가 처했던 상황과 카카오 애드핏의 대처 등을 저와 같은 상황을 겪으신분들에게 도움이 되고자 포스팅 했습니다. 애드핏 광고 Fill-Rate 이슈 일지 저는 개인앱에 애드핏, 애드몹등의 광고를 붙여서 광고 수익을 창출하고 있습니다. 그중에 애드핏을 메인으로 사용하고 있었는데 어느 순간 Fill-Rate가 떨어지기 시작하더니 10퍼센트를 웃돌던게 superwony.tistory.com 결과 먼저 공유해드리자면 동일한 문제가 발생하여 다른 광고사들 연동을 준비하고 있습니다. 이전에도 자체 미디에이션?처럼 애드핏이 실패할 경우 애드몹을 호출하는등의 3개 광고사를 연동해서 운영했습니다. 지금 진행중인 방향인 애드몹 미.. 애드핏 광고 Fill-Rate 이슈 일지 저는 개인앱에 애드핏, 애드몹등의 광고를 붙여서 광고 수익을 창출하고 있습니다. 그중에 애드핏을 메인으로 사용하고 있었는데 어느 순간 Fill-Rate가 떨어지기 시작하더니 10퍼센트를 웃돌던게 0퍼센트까지 떨어진적이 있습니다. 애드핏이 광고를 노출 못해도 자체 미디에이션 기능으로 인해 다른 광고를 노출하고 있었지만 CPC, CPM등이 달랐기 때문에 수익에는 큰 문제가 있었습니다. 그래서 부랴부랴 카카오에 문의 했습니다. 아니..10프로 정도 떨어진게 아니고 80프로 가까이 떨어졌는데.. 물론 메뉴얼대로 하셨겠지만 조급한 저와 달라 마음이 많이 조급했습니다.. ( 내돈 ㅠㅠ 내도오온!! ) 구글 애널리틱스를 연동해서 광고 로드 실패시 원인을 추적하고 있어서 '302( 광고 부족 ) 에러코드가 발생한다' .. [AOS] Room으로 이미지 백업 기능 구현 후기 식물일기 앱은 사용자간 상호 작용이 없기 때문에 로컬 디비만 활용하여 운영하고 있는데 백업 기능을 간간히 요청해주셨었습니다. 별도 서버를 두거나 파베를 이용하여 구현하면 간단한 기능이지만 수익이 나지 않는 앱에 투자하기란 쉽지 않았기 때문에 로컬 백업 기능을 먼저 시도해봤습니다. 식물일기 디비 현황 - Room 사용 - 이미지 사용시 앱 내부 저장소에 크롭된 이미지를 저장하고 그 경로를 디비에 String값으로 담는다 ( 식물 이미지, 일기 작성시 이미지 ) - 그 외엔 모두 텍스트 데이터 백업 기능 요구사항 - 디바이스 변경시 데이터 옮길수 있을것 - 앱을 지웠다 깔아도 데이터 옮길수 있을것 진행 순서 - 디비 구조 마이그레이션 - 디비 파일로 만들기 - 파일된 디비 읽어들이기 디비 구조 마이그레이션 .. [AOS] GA4 적용하기 - 개념 GA(Google Analytics)는 많은 기업에서 사용자의 패턴을 분석하고 마케팅 효과를 확인하는등의 용도로 사용중입니다. 저도 기존에 사용중이였지만 보다 똑똑하게 사용하기 위해 공부한 내용을 공유하고자 포스팅합니다. ( 공부한 내용을 정리하는 포스팅이다보니 부정확한 정보들이 많을 수 있습니다. 참고해서 봐주세요 ) 틀린 부분이 있으면 편안하게 말씀해주시면 정정하도록 하겠습니다. GA4란? 20년 10월쯤 새로 출시된 버전으로 기존버전은 UA(Universal Analytics) 로 칭합니다. GA4 vs UA GA4의 큰 변화는 데이터 구조와 데이터 수집 로직이 달라졌다. GA3는 세션 기반, GA4는 유저, 이벤트 기반입니다. 세션이란 ? 유저가 한번 방문을 하고 방문을 종료했을때 까지 시간을 의.. [AOS] SnackBar vs Toast 토스트나 스낵바는 가벼운 메세지를 유저에게 전달할때 주로 사용하는데 장단점이 명확해 상황에 맞게 사용하면 좋을것 같습니다. 로그인 화면에서 아이디를 입력하지 않고 로그인 버튼을 눌렀을때 '아이디를 입력해주세요' 와 같은 메세지를 전달할때 간략히 차이점 먼저 공유드리면 아래와 같습니다. 보다 세세한 내용은 밑에 서술된 내용을 참고해주세요 스낵바 토스트 화면 크기 변동시 위치 변화 유동적 고정적 클릭 이벤트 작동 여부 작동 비작동 노출 영역 현재 엑티비티 디바이스 화면 기본 사용 아래는 기본적으로 제공하는걸 사용했을때 사진입니다. 레이아웃이 다르지만 둘다 커스텀을 할 수 있어서 크게 신경쓰지 않아도 되지만, 노출되어 있는 상태에서 키보드가 호출됐을때 처리는 다릅니다. 스낵바는 화면의 크기가 변함에 따라 위치.. 이전 1 2 3 4 5 ··· 7 다음