728x90
반응형
- [ Android/Android ][Android] 플레이스토어 없이 앱 업데이트하기2024-04-03 00:22:21들어가며 앱을 플레이스토어에 게시하지 않고, 앱 자체에서 업데이트를 수행하는 기능을 검토하게 되었다. 사실 제일 깔끔한 것이 플레이스토어에 업로드하고, 구글이 시키는대로 하는 것이다. 앱 내부에서 업데이트를 진행하고 싶다면 인 앱 업데이트 키워드로 검색하면 된다. 아무튼 여러 이유로 앱을 게시하지 않고, 특정 집단에만 배포하고 싶은 경우도 있을 것이다. 이럴 때는 어떻게 앱이 최신상태를 유지할 수 있을까? 내가 알아본 것을 기술해보도록 하겠다... 1. 라이브러리 이용하기 공교롭게도(?) 22년에 해당 기능을 검토한 적이 있었는데, 이때는 라이브러리를 이용해 대강 구현을 했었다. 여러 라이브러리가 존재하겠지만 나는 AppUpdater라는 라이브러리를 이용했다. 사용 방법이 굉장히 간단하니 간단하게 작성해..
- [ Android/Android ][Android] SharedPreferences를 대체할 DataStore에 대해 알아보자2024-01-19 11:53:37DataStore SharedPreferences를 대체 개선된 신규 데이터 저장소 솔루션 Kotlin 코루틴과 Flow를 기반으로 함 비동기적이고 일관된 트랜잭션 방식으로 데이터를 저장 → SharedPreferences의 단점을 일부 극복 UI 스레드 차단 디스크 I/O 작업을 하는 동기 API가 존재 apply()는 fsync()에서 UI 스레드를 차단합니다. 대기 중인 fsync() 호출은 서비스가 시작되거나 중지될 때마다, 그리고 애플리케이션에서 활동이 시작되거나 중지될 때마다 트리거됩니다. UI 스레드는 apply()에서 예약한 대기 중인 fsync() 호출에서 차단되며 주로 ANR의 소스가 됩니다. 런타임 예외 파싱 오류를 런타임 예외로 처리 Preferences DataStore와 Prot..
- [ Android/Android ][Android] BottomSheetDialog2023-12-30 18:52:15WW 앱의 업데이트 상태를 알리기 위한 방법으로 바텀 시트 다이얼로그를 선택했다. 이전에는 기본 다이얼로그를 커스텀해 사용하는 방식을 많이 선택했는데 요즘 앱들을 살펴보면 바텀 시트 다이얼로그로 상호작용을 많이 하는 것 같아 한번 구현해보기로 했다. 바텀 시트 다이얼로그에도 종류가 있는데, 자세한 것은 아래의 링크에 잘 설명이 되어 있으니 참고하면 좋다. 오늘 구현해 볼 것은 Modal bottom sheet이다. Bottom Sheet Dialog 예제 : Modal, Persistent, 모서리 둥글게 등 1. Bottom Sheet Dialog 1-1. 개념 1-2. 종류와 차이 2. Modal Bottom Sheet 2-1. 기본 예제 2-2. 모서리가 둥근 예제 2-3. 버튼이 있는 예제 2-4..
- [ Android/Android ][Android] AppUpdateManager 앱 업데이트 확인하기2023-12-29 22:37:25앱을 사용하다 가끔 업데이트 하라는 팝업을 본 적이 있을 것이다. 앱의 버전을 확인하고, 업데이트가 필요할 경우 플레이스토어로 이동할 수 있도록 기능을 추가해보려고 한다. AppUpdateManager 앱이 자체 업데이트를 시작할 수 있도록 하는 작업을 관리하도록 도와주는 인터페이스이다. 그러니까 인앱 업데이트를 구현하기 위한 클래스인데, 이번에는 업데이트 필요 여부에 관한 것 정도만 확인할 예정이다. 초기화 val appUpdateManager = AppUpdateManagerFactory.create(context) 업데이트 상태 확인 fun getAppUpdateStatus() { // 업데이트 가능한지 확인 val appUpdateInfoTask = appUpdateManager.appUpdate..
- [ Android/Android ][Android] 권한 요청 워크 플로우2023-12-28 22:58:39앱을 사용할 때 사용자의 위치에 접근하거나, 미디어 파일에 접근해야하는 경우 권한을 요청하는 다이얼로그를 본 적이 있을 것이다. 오늘은 권한 요청을 위한 작업 순서에 대해 알아보도록 할 것이다. 개인 프로젝트인 WW (기온별 옷차림 안내 어플) 을 개발하며 작성해두었던 내용임을 참고하길 바란다. 앱의 매니페스트 파일에서 앱에 요청할 필요가 있을 권한 선언 특정 비공개 사용자 데이터에 액세스 해야하는 앱의 작업을 사용자가 호출할 때까지 기다림 → 호출했을 때 런타임 권한을 부여했는지 확인 WW의 경우 위에서 선언한 것처럼 ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION 권한이 필요함. -> 위치 권한이다. ActivityCompat.checkSelfPermission 권한 ..
- [ Android ][Kotlin] Scope Function 범위 지정 함수2023-12-09 11:50:42들어가며 처음 코틀린을 공부했을 때, 스코프 함수를 만나고 이것이 코틀린 진입장벽 중 하나라고 생각했다. 생전 처음 보는 키워드에다 (본인은 자바를 사용하고 있었다.) 어디에 뭘 써야하는지 도무지 감이 오지 않았기 때문이었다. 스코프함수에 대해 공부를 했지만 시간이 흐른 뒤에야 고백하자면 100% 이해하고 사용한 것이 아니었다. 요즘같이 기본을 탄탄하게 다져야겠다는 생각이 드는 바로 지금, 코틀린의 스코프 함수를 다시 알아보기로 한다. Scope Function (이하 스코프 함수) The Kotlin standard library contains several functions whose sole purpose is to execute a block of code within the context of..
- [ Android ]GPS 보정하기 - 032023-11-22 22:37:03지난이야기 GPS 보정하기 - 02 들어가며 GPS 보정하기 - 01 사실 이 알고리즘은 이전 프로젝트에서 개발 되었던 것인데, GPS 정확도 개선을 위한 좌충우돌 얼레벌레 MapMatching 구현기들어가며 정말 오랜만에 글을 쓰는 것 같다. 못 www.pinslog.com 지난 글에서는 알고리즘의 문제점들을 개선하는 과정을 작성했다. 이번 글에서는 경로이탈에 관해서 작성해보려고 한다. 경로이탈 개인적으로 나는...내비게이션의 꽃은 경로이탈이라고 생각한다...(부들 사용자들은 자유의지를 가지고 있기 때문에 절대로 안내된 경로대로 가지 않는다. 난 그걸 내 눈으로 똑똑히 보았다. 그래서 경로이탈이 감지되면 사용자의 현재 위치를 바탕으로 목적지까지의 길을 재탐색하여 다른 경로를 제공해야한다. 그런데 보정 ..
- [ Android ]GPS 보정하기 - 022023-11-20 23:15:30들어가며 GPS 보정하기 - 01 사실 이 알고리즘은 이전 프로젝트에서 개발 되었던 것인데, GPS 정확도 개선을 위한 좌충우돌 얼레벌레 MapMatching 구현기들어가며 정말 오랜만에 글을 쓰는 것 같다. 못해도 한달에 한개는 작성 www.pinslog.com 먼저 작성한 알고리즘에 문제가 있었다고 했다. 이를 해결하기 위해 어떤 것들을 수정 또는 추가 하였는지 간략하게 작성해보려고 한다. 0. 데이터 형식 변경 (보정 대상) 이전 프로젝트는 경로가 노드 정보로만 이루어져 있었다. 그래서 노드들을 이으면 링크가 되었기 때문에 노드를 이은 리스트가 매칭 대상이 되었는데, 이번 프로젝트 같은 경우 같은 경로 안내이지만 노드와 링크 정보가 모두 존재하였다. 따라서, 링크 정보를 받아 보정 대상을 생성해주었..
728x90
반응형