본문 바로가기

안드로이드

(161)
[안드로이드/Kotlin] WorkManager를 활용한 백그라운드 작업 Android Jetpack의 일부로 백그라운드 작업시 구글에서 권장하는 API입니다. ( API 14이상 모두 지원 ) 기존에는 서비스를 생성하거나, 브로드캐스트 리시버를 사용해서 개발자가 원하는 시점에 앱을 깨워 작업할 수 있었습니다. 하지만 Target SDK 26이상부터는 제약으로 인해 WorkManager를 활용해야만 원활한 백그라운드 작업이 수행 가능합니다. 타겟이 이전인 예전 프로젝트나, 스토어에 출시하지 않는다면 기존 방법들도 사용 가능합니다. ( 현재 마켓 Target SDK는 29가 아니면 출시 불가 ) >> WorkManager를 활용한 경우 - 알람 매니저로 특정 시점에 서버 통신의 결과를 Noti로 보여줘야 하는 경우 ( 버전별 알람 매니저 적용법 ) - 알람 매니저로 특정 시점에..
[Android/Kotlin] Transformations를 사용해 Livedata 활용하기 Livedata는 양방향 데이터 바인딩이나 Transformation과 함께 쓸수록 더 유용하게 사용할 수 있습니다. Transformation은 하나의 Livedata가 변경될때마다 다른 Livedata를 변경해줄때 사용하면 유용합니다. >> Transformations.map ( 공식문서 ) 첫번째 인자로 Livedata 넘겨준다. 두번째 인자 리턴 형태가 있는 함수를 넘겨주는데 반환 타입에 제한은 없다 ( 리턴된 타입이 String이면 Livedata으로 반환된다.) var name = MutableLiveData() var displayName = Transformations.map(name){ mapName -> "우리${mapName}" } 디비에 저장된 이름을 불러오는 'name' 변수가 있..
[Android/ios] 카카오톡 공유하기 api - 템플릿 설정 및 앱 적용 작성이력 - 21.2.6 : 최초 작성 - 21.5.31 : 카카오 커스텀 이미지 전송 링크 추가 기본적으로 FEED, LIST, COMMERCE를 제공하는데 오늘은 FEED만 다룰 예정이며, SDK 설정과 기능 및 카카오 디벨로퍼를 설정하는 부분은 공식 사이트를 참고해주세요 >> 템플릿 생성 위 세가지 유형중 한가지를 선택하고 간략한 설명을 기재하면 템플릿이 생성됩니다. ID : SDK 연동할때 필요한 템플릿 아이디 값입니다. 템플릿 설명 : 진행중인 앱/웹 프로젝트의 구성원들이 판별하기 쉽도록 의도에 맞는 이름을 넣어주세요. ex)친구초대 링크 사용 목적 : '카카오 링크/나에게 보내기'를 선택합니다. >> 상세 정보 설정 탭별로 나뉘어져 있는 정보들을 설정하면 왼쪽에 미리보기를 통해 전달됐을때 메세..
[Android] 이미지 버튼 만들기 이미지 버튼을 만들땐 해상도에 따라 버튼의 넓이를 조절할 것인지, 고정 dp로 할것인지에 따라 다르게 작업해야 합니다. 해상도에 따라 버튼의 넓이를 조절하고 높이는 고정으로 할 경우 이미지를 다운받아서 적용하면 이미지 원본 비율을 유지한채 나머지 넓이는 여백으로 가득 찰 것 입니다. 그래서 상황에 맞는 이미지를 적용해야 합니다. >> 통 이미지를 그대로 적용했을 경우 여백을 채우고자 scalyType을 fill_xy로 지정하는등 억지로 늘린다면 이미지가 깨지는 결과를 초래합니다. 그렇기 때문에 이미지의 넓이만 늘리는 작업은 vector기반으로 작업하거나 넓이에 따라 높이를 늘려주거나 centerCrop으로 모든 이미지를 보여주진 않지만 꽉차게 보이게 할순 있습니다. 하지만 위와 같은 결과를 원하진 않기 ..
[Android] Firebase Crashlytics 추가하기 FirebaseCrashlytics는 Firebase에서 제공하는 강력한 기능중 하나로 사용자들이 앱을 사용하다가 발생하는 에러들을 수집하는 툴로 앱에 없으면 안되는 라이브러리중 하나 입니다. firebase console에서 앱을 추가하고 난 뒤 과정(앱 설정)을 설명하며 추가 하는 방법은 콘솔에서 제공하는 가이드를 따르면 쉽게 할 수 있습니다. 앱 설정 가이드도 google에서 가이드 문서를 제공하지만 내용 설명이 부족해 가이드 문서대로 진행했을 경우 앱이 실행되지 않는 이슈가 있어 별도 포스팅을 작성했습니다. 신규 앱에 추가하는 경우가 아닌 Fabric에서 업데이트 하는 경우도 제 포스팅을 참고해주세요. >> Project Level build.gradle buildscript { repositor..
[Android] Firebase Crashlytics Error 개발중인 앱에 firebase Crashlytics를 붙였는데 빌드시 2번에 한번 꼴로 에러가 발생했습니다. 에러 : the crashlytics build id is missing. this occurs when crashlytics tooling is absent from your app's build configuration. please review crashlytics onboarding instructions and ensure you have a valid crashlytics account. 원인을 검색 해봐도 대부분 fabirc 시절에 내용들뿐이고 에러 해결에 도움이 되는 글은 마땅히 없었습니다. 제가 작성하는 글도 정확한 원인을 파악한 경우는 아니지만 해결이 되어 공유드립니다. buil..
[Android] SHA key 간편하게 얻기 기존에 SHA 키를 얻으려면 터미널을 이용하거나 소스코드를 작성해서 빌드해서 얻는 방법을 사용했었습니다. 어렵진 않지만 다소 번거롭고 코드를 찾아서 복/붙을 해야했는데 AndroidStudio에 Gradle View를 이용하면 간단하게 알 수 있습니다. >> SigningReport GradleView -> app(개발중인 앱 폴더 명) -> Tasks -> Android -> signingReport 위 경로를 클릭하면 하단에 콘솔창에 나타나게 됩니다. >> 결과 사진 우측 빨간 네모안에 나오는 데이터를 긁어다 쓰시면 됩니다.
[Android/Kotlin] Room 마이그레이션 Entity(테이블)의 컬럼이 추가되거나, Entity 자체를 추가하는등 Database 수정이 발생했을때 아무런 조치를 취하지 않고 버전만 올린다면 저장되어 있던 데이터가 날아가 사용자에게 불편함을 줄 수 있어 필수로 처리 해줘야 합니다. Room 사용법은 제 포스팅을 참고해주세요. >> 버전업 @Database(version = 2, entities = [PlantData.Item::class,DiaryData.Item::class]) abstract class DB : RoomDatabase() { Room의 구성요소중 하나임 RoomDatabase에 명시된 버전을 수정합니다. [ ex) 1 -> 2 ] >> Migration 객체 생성 및 sql 문 작성 private var MIGRATION_1..