인앱 업데이트 표시 플레이스토어 출시 후, 앱 버전을 올리게 되면 사용자는 앱을 업데이트해야 원활한 앱 사용이 가능하다. 하지만 기본적으로는 앱내에서 업데이트를 알려주지 않기 때문에, 플레이스토어에서 직접 확인하지 않는 한 업데이트 내역을 알아차리긴 힘들다. 여기서 구글의 인앱 업데이트를 전송할 수 있도록 하는 라이브러리가 있다. AppUpdateManager이다. 이걸 활용하면 간단하게 앱 내에서 업데이트를 확인하고 그에 따라 알림을 띄워 볼 수 있다. // update check (app - build.gradle) implementation 'com.google.android.play:app-update-ktx:2.1.0' // 앱 시작 시 앱 버전을 체크함 (activity or fragment)..
GPS 상태 확인 원인 기기의 GPS가 꺼져 있을 떄, 위치 권한을 획득하여 좌표를 구할 떄 null 값이 발생해 앱이 꺼지는 현상이 있었다. GPS가 켜져 있지 않은데, 좌표를 가져오려다 보니 생기는 현상이였다. 해결 과정 해결하기 위해 위치 권한을 가져오기 전에 GPS 상태를 확인 할 필요가 있었다. 그래서 먼저, GPS 가 켜져있는지 확인하는 변수를 두었다. 그리고 앱을 시작할 때 checkGPSStatus라는 메소드를 만들어 GPS 상태를 확인했다. GPS 상태는 LocationManager의 isProviderEnabled(LocationManager.GPS_PROVIDER)를 통해 확인 할 수 있었다. isGpsOn 변수를 이용하여 위치를 가져오기 전 isGpsOn 값을 확인한다. 만약 GPS..
원인 앱을 플레이스토어에 게시하고 직접 다운로드를 받아 확인하던 중, 카카오맵이 뜨지 않는 현상을 발견하였다. 구글 플레이 개발자 콘솔에서 Google play app signing 기능을 활성화 시켰다면 구글 플레이에 앱이 릴리즈되기 전에 개발자의 로컬 개발 환경에서 릴리즈 키스토어의 시그너쳐가 삭제되고 구글 서버에 저장되어 있는 사이닝키의 시그너쳐로 교체된다. 그렇기 때문에 이 사이닝키로 생성한 키해시 또한 등록해줘야 되는 것이 원인이였다. (구글 키로 사용한 이유는 내 개인 키스토어는 잃어버리거나, 비밀번호를 까먹거나 하는 휴먼 에러때문에 서버에 저장되는 구글 키를 사용) 해결 과정 구글 플레이 콘솔에 있는 SHA-1키를 가져와서 카카오 키 해시로 등록을 해주었더니 해결 되었다. 카카오 키해시는 b..
일일 회고 최종 발표 D - 1 !! 마지막까지 버그 수정하고 배포하느라 정말 바쁘다!! 마지막까지 힘내자! 오늘의 키워드 인앱 업데이트 인앱 업데이트 표시 구글 플레이 디펜던시에서 인앱 업데이트를 확인 할 수 있도록 지원해준다. AppUpdateManager 활용 // update check implementation 'com.google.android.play:app-update-ktx:2.1.0' // 앱 시작 시 앱 버전을 체크함 private fun checkNewVersion() { val appUpdateManager = AppUpdateManagerFactory.create(requireActivity()) homeViewModel.checkNewVersion(appUpdateManager..
일일 회고 프로젝트 정리 및 발표 준비로 바쁘다..ㅎㅎ 이제 3일 밖에 남지 않았다 발표준비를 잘해서 유종의 미를 거둬보자 오늘의 키워드 트러블 슈팅 https://aaapple.tistory.com/133 [Android] 앱 출시 후 카카오 맵이 보이지 않는 현상 원인 앱을 플레이스토어에 게시하고 직접 다운로드를 받아 확인하던 중, 카카오맵이 뜨지 않는 현상을 발견하였다. 구글 플레이 개발자 콘솔에서 Google play app signing 기능을 활성화 시켰다면 구 aaapple.tistory.com
일일 회고 프로젝트 정리 및 발표 준비로 바쁘다..ㅎㅎ 이제 3일 밖에 남지 않았다 발표준비를 잘해서 유종의 미를 거둬보자 오늘의 키워드 트러블 슈팅 https://aaapple.tistory.com/134 [Android] GPS 상태 확인 GPS 상태 확인 원인 기기의 GPS가 꺼져 있을 떄, 위치 권한을 획득하여 좌표를 구할 떄 null 값이 발생해 앱이 꺼지는 현상이 있었다. GPS가 켜져 있지 않은데, 좌표를 가져오려다 보니 생기는 현상이 aaapple.tistory.com
일일 회고 정말 일주일 밖에 안남았다... 시간이 참 빠르다... 최종 발표 준비를 잘 해보고 유종의 미를 거둬보자.. 오늘의 키워드 기술 면접 문답 작성 Sealed class란? 여러 자식 클래스들이 하나의 부모 클래스를 상속받았다고 할 때, 컴파일러는 어떤 클래스들이 부모 클래스를 상속받았는지 알지 못한다. 그래서 이 문제를 해결하기 위해 sealed class라는 개념이 나왔는데 sealed class는 자신은 추상클래스이고, 자신을 상속받는 자식 클래스의 종류를 제한하는 특성을 가지고 있다. 컴파일 시 sealed class의 자식이 어떤 것이 있는지 알 수 있다는 것이다. 자식 클래스의 종류를 제한하기 때문에 다음과 같은 특성이 있다. 실드란 '봉인된'이라는 의미로 무언가 안전하게 보관하기 위..
일일 회고 벌써 수요일! 시간이 빠르다 다음 주 금요일이면 마무리이다. 최종 발표 준비, 버그 수정 등 해야할 일이 많다.. 차근차근히 해보자 오늘의 키워드 기술 면접 질답 작성 예외란 무엇일까요? try - catch - finally 는 각각 어떤 구문일까요? 프로그래밍을 하다 보면 코드가 제대로 작동하지 못하고 중단되는 현상이 발생할 수 있다. 이것 을 예외라고 한다. 여기서 잘 구분을 해야 하는 것이 Error(오류)와 Exception(예외)의 차이이다. 언뜻 보면 둘 다 프로그램을 중지 시키는 측면에서 비슷하다고 볼 수 있겠지만 의미를 들여다보면 각각이 가지고 있는 의미가 다르다. Error는 시스템이 종료되어야 할 수준의 상황과 같이 수습할 수 없는 심각한 문제를 의미한다. 개발자가 미리 예..
일일 회고 프로젝트를 마무리 해야 할 때가 왔다.. 배포 준비, 최종 발표 준비, 버그 수정 등 해야할 일이 많다.. 차근차근히 해보자 오늘의 키워드 기술 면접 질답 작성 안드로이드 앱에서 데이터 저장 방법에 대해 설명하시오 다양한 저장방법이 있는데 그 중 몇 가지를 서술해본다 sharedPreference 설정 정보나 사용자 기본 설정과 같이 작은 양의 데이터를 저장하는 데 적합하다. 앱 내부 저장소에 저장 되기 때문에, 앱이 삭제 될 때, 데이터가 함께 삭제된다. 키-값 쌍을 갖는 데이터로 복잡하지 않은 간단한 데이터를 저장할 때 사용한다. 내부 저장소 조금 더 복잡한 데이터를 보관할 때 쓸 수 있다. 이 역시 앱 내부 저장소이기 때문에, 앱이 삭제 될 때, 데이터가 함께 삭제된다. 안드로이드 파일 ..
일일 회고 배포 준비를 위해 구글 개발자 계정을 등록해보았다! 살펴보면서 준비해보자 오늘의 키워드 기술 면접 자답 디폴트 파라미터 코틀린은 함수(메소드)의 파라미터에 기본값을 지정하여 호출 할 수 있다. 이것이 디폴트 파라미터이다. fun getName(id: Int = 123): String { // 구현 부.. } 다음과 같은 장점이 있다. 코드 간결성 - 함수 호출 시 모든 파라미터를 제공하지 않아도 되기 때문에 함수 호출 코드가 간단해 진다. 가독성 향상 - 특정 파라미터에만 값을 전달하면 되므로 함수 호출 부분의 의도를 더 잘 드러낼 수 있다. 오버로딩 감소 - 다양한 버전의 함수를 오버로딩하여 제공할 필요가 줄어든다. 여러 버전의 오버로딩된 함수를 유지보수하고 관리하는 것보다 디폴트 파라미터를..