본문 바로가기

안드로이드

(161)
[Android]AlarmManager를 이용해 위젯을 업데이트 하자! 시간 단위로 화면을 보여주는 일정 위젯의 경우 일정 시간마다 업데이트 해야 합니다. 만약 30분 이상의 텀을 갖고 위젯을 업데이트 한다면 편하게 provider를 이용해서 주기적으로 업데이트 하는 방법을 이용하시고 30분이하나 불규칙하게 업데이트 하신다면 AlarmManager를 이용해서 업데이트 해보세요 위젯 관련 다른 포스팅 [안드로이드/Android] 위젯 만들기 [Android] Coroutine + 위젯 업데이트 하기 공통 알람 등록 private fun startAlarm(context: Context, alarmId: Int, intent: Intent, intervalTime: Long) { var alarmManager = context.getSystemService(Context.ALA..
카카오 애드핏 적용 후기 회사 일과 병행해서 개인앱을 개발해 3개의 토이앱을 출시했지만 현재는 1개만 운영중입니다. 애드몹을 붙여서 간간히 수익을 내고 있었는데 광고 플랫폼을 애드핏으로 변경하면서 발생한 긍정적인 후기 공유합니다! 적용 방법은 카카오 에드핏 포스팅을 참고해주세요. 운영 중인 앱은 17년도에 첫 출시해서 간간히 업데이트 하고, 사용자들이 피드백 준 사항들은 적극 반영했는데 점점 증가하더니 요 근래 많이 증가 해서 3천명 정도가 활성 유저로 잡혀 있습니다. (*존버는 승리한다!) 앱의 성격상 설치 수는 많지만 삭제하는 유저들이 많아 활성 유저수는 작아요, 그리고 채팅 앱인줄 알고 설치하셨다가 별점 한개를 주시는 분들도 많아요 흙흙 그래도 좋게 남겨주시는 분들도 많아 힘을 얻고 있습니다. ( 감사링 ) 궁금하신분은 링..
Remote Config를 사용해서 서버 없이 업데이트 버전을 체크하자 : 안드로이드 많은 개발자들이 취미겸 1인 개발을 진행하는데 비용 부담이 큰 서버를 운영하기엔 어렵습니다. 그래서 구현을 포기해야 하는 기능들도 많이 있는데 뒷북 수준이지만 Firebase 에서 제공중인 Remote Config를 사용하면 일부 기능들은 구현이 가능합니다. 간단한 예로는 신규 기능이 출시되서 이전 버전을 사용하는 유저들에게 새로운 버전을 안내하고 싶은 경우 Remote Config를 사용하면 됩니다. Remote Config는 무료로 제공되지만 값을 가져오는 간격은 12시간을 권장합니다(기본값) 기본적인 구조는 키/값 구조이지만 임의의 유저들에게만 값을 전달할 수 있고 json 구조로 복잡한 구조의 데이터 전달도 가능합니다. 이를 활용해서 업데이트 버전 체크 뿐만 아니라 다양한 기능을 무료로 구현할 수..
kakao Adfit 적용 [ 인앱 배너 광고] 애드몹 배너 광고만 사용하다 다른 배너 광고와 수익을 비교하고자 카카오 애드핏을 적용 했고, 공식 사이트에서 카카오 아이디로 가입을 하고 가이드를 참고해 적용 했습니다. ※카카오 애드핏은 심사 과정을 거쳐야지만 광고가 게재되는 불편함이 있습니다. 광고 단위 생성 공식 사이트에서 > 광고관리 로 이동하셔서 앱을 등록하고 광고 단위 코드를 제공 받습니다. 권한 등록 광고 필수 권한을 manifest.xml에 등록합니다. sdk 적용 build.gradle(project단) allprojects { repositories { jcenter() google() maven { url 'http://devrepo.kakao.com:8088/nexus/content/groups/public/' } } } build...
게시판 구현 복기 이번에 개발하게된 게시판은 탭 형태의 메뉴를 갖고 있고 메뉴별로 수직 형태 리스트를 갖고 있고 각 리스트별 ui가 다른 게시판입니다. 카테고리별 게시판을 개발하면서 어떤 컴포넌트를 어떤 식으로 활용하면 좋을지 많은 고민을 했고, ui 구조 전체를 바꾸는 경우도 있었습니다. 다음 ui 작업시 같은 시행 착오를 줄이기 위해 복기용으로 해당 포스팅을 작성합니다. Viewpager2 사용 후기 처음엔 tablayout + viewpager2 > recyclerview(vertical) 로 구현 메뉴는 tablayout으로 구현하고 메뉴 간 스와이프 이동으로 viewpager를 사용했고, fragment를 사용해야하는 viewpager1보단 리사이클러뷰 어뎁터를 사용할 수 있는 viewpager2를 사용했는데 많..
couldn't make a guess for 바인딩 오류 해결, 패키지명 변경 유지보수 중인 프로젝트의 패키지명의 대문자가 있어서 데이터 바인딩 라이브러리를 사용해서 빌드하면 'couldn't make a guess for 바인딩된 패키지명' 에러가 발생해서 사용을 포기하고 있었는데( 패키지명을 바꾸면 스토어에 기존 앱으로 업데이트 할 수 없기 때문에 ) 스토어에 올라가는 패키지명은 gradle(app) applicationId로 결정되서 패키지명을 바꿔도 업로드 가능합니다. 자세한 내용은 구글 공식 문서를 확인해주세요
제플린을 사용하는 디자이너와 협업하기 많은 디자이너들이 제플린을 사용해서 디자인을 하는데 개발자와 사용하는 언어나 수치 측정 방법이 다르다보니 가이드를 코드로 옮기는데 어려울때가 있습니다. 그럴때 대충 개발자의 눈(?)으로 때려 맞춘적도 여러번 있었는데 정확한 개념을 알게되어 복기 및 공유 차원에서 작성합니다. lineSpacingExtra , lineSpacingMultiplier textView의 줄간격을 조정하는 attribute들 입니다. lineSpacingExtra 줄 사이 간격을 dp 값으로 조정하며 기본 값은 0dp입니다. 글자 크기에 상관 없이 고정 값으로 디자이너가 전달해준 제플린 가이드를 참고하면 생각보다 큰 값이 넘어옵니다. 'Line Height' 는 말 그대로 줄 전체의 높이로 [글자 크기] + [입력 값] = [L..
Recyclerview 에서 Glide를 사용했을때 자동 스크롤 막기 Recyclerview에서 glide를 사용하여 이미지 로드시 일부 특정 기기에서(Galaxy Wide3) 이미지 영역으로 스크롤 되는 현상이 발견 됐습니다. 디바이스 성능의 문제로 추측되지만 제가 운영중인 앱의 많은 사용자들이 최신 디바이스가 아니기 때문에 수정해야 했습니다. 간단한 문제기도 해서 최신 디바이스를 사용하는 유저가 많은 개발자분들도 적용하면 좋을것 같아요! recyclerview를 linear로 한번 감싸주면 됩니다.