본문 바로가기

안드로이드/팁

(49)
Firebase 다이나믹 링크로 인앱 설치 유도 이번 포스팅에서는 다이나믹 링크 생성법과 사용법에 대해선 다루지 않고 사용하면서 겪은 문제와 해결 방법에대해 다루니 참고해주시기 바 랍니다. 그리고 더 나은 방법은 댓글이나 방명록을 통해 안내해주세요. 다이나믹 링크뿐만 아니라 Firebase에선 앱 운영시 필요한 다양한 기능들이 많으니 적극 활용하는걸 추천합니다! 구글 콘솔 내부 테스트 활용 본론으로 들어가 앱을 설치하지 않은 유저가 다이나믹 링크를 클릭해서 앱을 스토어에서 다운 받고, 열기 버튼으로 앱을 열었을때 특정 화면으로 이동하도록 출시했지만 작동하지 않았습니다. 테스트를 해야했지만 출시를 해야지만 가능하다고 생각해 하지 못했습니다. 근데 구글 콘솔에 '내부 테스트'란 기능이 통해 테스트 유저들을 선정하면 스토어에 접근했을때 상용 apk가 아닌 ..
안드로이드 launch mode 선택 앱과 엑티비티의 특성에 맞지 않는 무분별한 launch mode 설정은 사용자들에게 불편함을 주기 때문에 주의해야 합니다. 속성 standard singleTop singleTask singleInstance standard 가장 일반적으로 많이 사용되는 속성이고 default값이다. 기존에 생성된 Task에 엑티비티를 계속 쌓고 버튼을 연속 두번 누를 경우 같은 엑티비티가 2개 이상 쌓일수 있다. ( A > B > A > A ) singleTop 설정된 엑티티가 같은 Task 제일 상단에 존재할 경우 새로운 엑티비티를 생성하지 않고 기존에 생성된 엑티비티를 재 사용하며 onNewIntent 메서드를 호출한다. ( B > C 상태에서 C 호출시 B > C > C 가 아닌 B > C 스텍 유지 ) ※ C ..
TargetSdkApi 29 대응하기 이제 11월부면 신규앱도 구글 스토어에 등록할때 targetSdkApi를 29로 조정해야합니다. 등록하기 앞서 기존에 사용중이던 기능들이 제대로 작동하는지 파악해야합니다. 굵직한 변화들은 이미 많은분들이 포스팅을 통해 소개했기 때문에 실질적으로 마이그레이션시 신경써야 하는 부분들을 서술 하도록 하겠습니다. >> 비SDK 사용 금지 구글 문서에 공식화 되지 않은 SDK들로 강제로 사용하는 경우가 있다고 하네요. 생소해서 처음 들어보긴 하지만 blacklist(차단목록)에 포함된 인터페이스에 접근하려고 할때 에러가 발생할 수 있으니 사용중이라면 제거하고 출시하는게 맞을것 같아서 찾아 봤습니다. 먼저 비 SDK API는 3가지로 구분됩니다. blacklist ( 차단 목록 ) - 앱의 타겟 api 수준과 상관..
[Android] Webview내 카카오톡 공유하기 에러 / 해결방안 앱내 웹뷰에서 카카오톡으로 공유하는 기능이 포함되어 WebviewClient()에 intent 기능을 수행하도록 처리 했습니다. 웹뷰에서 다른 앱을 실행시킬때 intent://로 시작해 보통 아래 코드와 같이 적용하면 문제 없이 작동했었습니다. class BaseWebClient(val context: Context) : WebViewClient() { var isHistoryClear = false override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean { if(url != null){ when{ url.startsWith("intent://") -> { try { val intent = Intent.parseUri(ur..
Firebase Crashlytics Sdk 업데이트 어느날 Firebase Console에 들어가니깐 2020년 11월 15일 이후에도 Firebase Console에서 오류보고서를 확인 하려면 sdk를 업그레이드 하라고 알림이 떴습니다. Crashlytics를 너무 잘 이용하고 있기 때문에 요구에 맞춰 업데이트 하도록 합니다. 원문은 링크를 참고해주세요 신규로 Crashlytics를 추가하시는 분은 제 포스팅을 참고해주세요 먼저 FirebaseConsole에서 프로젝트를 생성하지 않으신분들은 프로젝트를 생성하시고, 이미 생성하신 분들은 google-services.josn 파일을 다운 받으세요.( 파일은 프로젝트 콘솔 메인에 처음 진입했을때 우측 하단에서 받을 수 있습니다. ) 다운로드 받으셨을때 이미 다운로드된 파일로 인해 이름에 (2) 가 붙지 않도..
카카오 애드핏 적용 후기 회사 일과 병행해서 개인앱을 개발해 3개의 토이앱을 출시했지만 현재는 1개만 운영중입니다. 애드몹을 붙여서 간간히 수익을 내고 있었는데 광고 플랫폼을 애드핏으로 변경하면서 발생한 긍정적인 후기 공유합니다! 적용 방법은 카카오 에드핏 포스팅을 참고해주세요. 운영 중인 앱은 17년도에 첫 출시해서 간간히 업데이트 하고, 사용자들이 피드백 준 사항들은 적극 반영했는데 점점 증가하더니 요 근래 많이 증가 해서 3천명 정도가 활성 유저로 잡혀 있습니다. (*존버는 승리한다!) 앱의 성격상 설치 수는 많지만 삭제하는 유저들이 많아 활성 유저수는 작아요, 그리고 채팅 앱인줄 알고 설치하셨다가 별점 한개를 주시는 분들도 많아요 흙흙 그래도 좋게 남겨주시는 분들도 많아 힘을 얻고 있습니다. ( 감사링 ) 궁금하신분은 링..
게시판 구현 복기 이번에 개발하게된 게시판은 탭 형태의 메뉴를 갖고 있고 메뉴별로 수직 형태 리스트를 갖고 있고 각 리스트별 ui가 다른 게시판입니다. 카테고리별 게시판을 개발하면서 어떤 컴포넌트를 어떤 식으로 활용하면 좋을지 많은 고민을 했고, ui 구조 전체를 바꾸는 경우도 있었습니다. 다음 ui 작업시 같은 시행 착오를 줄이기 위해 복기용으로 해당 포스팅을 작성합니다. Viewpager2 사용 후기 처음엔 tablayout + viewpager2 > recyclerview(vertical) 로 구현 메뉴는 tablayout으로 구현하고 메뉴 간 스와이프 이동으로 viewpager를 사용했고, fragment를 사용해야하는 viewpager1보단 리사이클러뷰 어뎁터를 사용할 수 있는 viewpager2를 사용했는데 많..
제플린을 사용하는 디자이너와 협업하기 많은 디자이너들이 제플린을 사용해서 디자인을 하는데 개발자와 사용하는 언어나 수치 측정 방법이 다르다보니 가이드를 코드로 옮기는데 어려울때가 있습니다. 그럴때 대충 개발자의 눈(?)으로 때려 맞춘적도 여러번 있었는데 정확한 개념을 알게되어 복기 및 공유 차원에서 작성합니다. lineSpacingExtra , lineSpacingMultiplier textView의 줄간격을 조정하는 attribute들 입니다. lineSpacingExtra 줄 사이 간격을 dp 값으로 조정하며 기본 값은 0dp입니다. 글자 크기에 상관 없이 고정 값으로 디자이너가 전달해준 제플린 가이드를 참고하면 생각보다 큰 값이 넘어옵니다. 'Line Height' 는 말 그대로 줄 전체의 높이로 [글자 크기] + [입력 값] = [L..