개발 (54) 썸네일형 리스트형 [안드로이드/오류] 푸시 FirebaseMessagingService IllegalArgumentException 오류 AndroidRuntime: FATAL EXCEPTION: MQTT Rec: com.app.mobile-2e24ccbde048f2e91635651784 Process: com.app.mobile, PID: 17031 java.lang.IllegalArgumentException: com.app.mobile: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent. Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends o.. [플레이 스토어] 관리형 게시 사용하기 플레이 스토어 콘솔에 들어가 보면 '게시 개요'라는 메뉴를 확인할 수 있다. 이 메뉴를 통해 앱 업데이트 시기를 관리할 수 있다. 관리형 게시를 사용하기 위해서는 조건을 충족해야 하는데, 가장 중요한 두 가지는 앱 게시 상태가 '출시 안됨'이면 사용할 수 없다. 프로덕션/테스트 상관없이 트랙이 1개 이상 존재해야 한다. 이다. 처음 앱 배포를 하게 되면 트랙이 존재하지 않아 바로 관리형 게시를 사용할 수 없다. 앱을 공개 테스트나 프로덕션에 올리게 되면 스토어에 노출될 수 있기 때문에 곤란한 상황이 온다. 하지만 비공개 테스트나 내부 테스트에 게시해도 관리형 게시를 설정할 수 있게 된다. 관리형 게시를 켠 후 트랙을 생성, 배포하게 되면 바로 적용되지 않고 '검토 중'으로 상태가 변한다. 애플 스토어만큼.. [안드로이드/kotlin] 특정 날짜까지 남은 시간 타이머 만들기(CountDownTimer) CountDownTimer는 별도의 Thread를 생성하여 처리하지 않아도 간편하게 타이머 기능을 만들 수 있는 클래스다. 공식 문서를 통해 생성자와 기본 함수들을 확인할 수 있다. 함수명들이 굉장히 직관적이기 때문에 따로 설명을 하지 않아도 이해할 수 있다. CountDownTimer는 두 개의 파라미터를 받는다. - millisInFuture : 타이머의 작동 시간의 밀리초 값. 종료시간 - 시작시간 의 밀리값을 넣으면 된다. - coundDownInterval : onTick()의 호출 간격. 단위는 마찬가지로 밀리초이기 때문에 1초 간격을 설정하고 싶다면 1000을 넣어야 한다. 먼저 종료 시점을 임의로 생성해준다. val deadLine = Calendar.getInstance() deadLin.. [React Native/RN] 리액트 네이티브 시작하기 리액트 네이티브는 하나의 프로젝트로 안드로이드와 iOS를 모두 구동할 수 있기 때문에 최근 진행한 외주 프로젝트 모두 RN을 사용했다. 처음 시작할 때 급하게 독학을 하는 상황이었지만, 기초 부분에 있어서는 굉장히 많은 글들이 있어 도움을 많이 받았다. 초기 세팅은 까먹을 일이 많기 때문에 복습 겸 블로그에 기록해보려 한다. (출처: https://dev-yakuza.posstree.com/ko/react-native/install-on-mac/) *Mac OS 기준 (Windows 는 출처 블로그 참고) 1. Homebrew 설치 Homebrew The Missing Package Manager for macOS (or Linux). brew.sh 맥 패키지 관리자이다. 설치 후 설치 확인은 다음 명령.. [안드로이드/kotlin] ViewTreeObserver로 View의 크기 구하기 View에는 width, height 혹은 measuredWidth, measuredHeight 함수가 존재한다. 하지만 이걸 onCreate() 에서 호출하게 되면 0을 리턴하게 된다. onCreate 시점에는 View가 아직 그려지기 전 단계이기 때문이다. 뷰의 크기를 구하기 위해서는 'ViewTreeObserver'를 사용하면 되는데, 이름 그대로 ViewTree에 대한 옵저버(감시 혹은 관찰)라고 보면 된다. A view tree observer is used to register listeners that can be notified of global changes in the view tree. 공식 문서에도 설명이 상세하게 기재되어 있다. 말 그대로 View Tree가 변경될 때 변경사항을 .. [안드로이드] 개발할 때 자주 이용하는 사이트 정리 1. JSON Formatter & Validator JSON Formatter & Validator Format and validate JSON data so that it can easily be read by human beings. jsonformatter.curiousconcept.com 대부분 서버와 통신 시 JSON 데이터를 주고받게 되는데, 안드로이드 스튜디오의 로그로 json 데이터를 보면 눈에 잘 들어오지 않는 문제가 있다. 이때 해당 사이트를 이용해 json 데이터를 파악하기 쉽다. 사이트 중앙에 InputText 영역에 JSON 데이터를 입력하고 하단 "Process" 버튼만 클릭하면 된다. 버튼을 클릭하면 하단에 결과가 출력된다. VALID / INVALID 데이터를 구분해주며, .. [Github/안드로이드] 자주 사용하는 깃허브 기능 정리 1. Repository 추가 Repository 생성 상단 탭 VCS 메뉴 > Import into Version Control > Create Git Repository... 이미 생성한 Repository에 추가하는 경우 - 안드로이드 스튜디오 하단 Terminal에 입력 git init git commit -m "커밋 내용" git remote add origin 리포지터리주소 git push -u origin master 2. branch 생성 안드로이드 우측 최하단 master(브랜치명) 클릭 > new branch 클릭 > branch 이름 입력 후 Create (Checkout Branch 체크 필수) 혹은 상단 탭 VCS 메뉴 > Git 메뉴 > Branches... 메뉴 클릭 > new.. [안드로이드/Kotlin] RecyclerView를 이용한 GridView 생성하기 (GridLayoutManager) 안드로이드에는 격자 형태로 아이템을 보여주는 GridView 라는 위젯이 존재한다. 하지만 GridView를 사용하는 대신 RecyclerView에 GridLayoutManager 를 설정하여 사용할 수 있다. val gridLayoutManager = GridLayoutManager(this, 3) mBinding.recyclerItem.layoutManager = gridLayoutManager mBinding.recyclerItem.adapter = RecyclerAdapter() GridLayoutManager 를 생성할 때 파라미터로 context 와 한 줄에 표시해줄 아이템 수인 spanCount 를 입력하면 된다. GridLayoutManager(this, 3) -> 한 줄에 3개의 아이템을.. 이전 1 ··· 3 4 5 6 7 다음