본문 바로가기

깡샘 코틀린69

20-1 파이어베이스 연동과 인증 기능 일곱째 마당(20~21장)에서는 안드로이드 앱에서 파이어베이스와 연동하기를 배울 것이다. 파이어베이스를 이용하면 구글의 클라우드 시스템에서 모바일 앱이나 웹 애플리케이션을 서버리스(serverless)로 개발할 수 있다. 오늘날 클라우드 시스템을 활용한 서버리스는 애플리케이션 개발의 큰 흐름으로 자리 잡았다. 여기서는 그 대표 주자인 파이어베이스가 제공하는 다양한 기능 중 인증, 파이어스토어, 스토리지를 살펴보자. 이번 장에서는 파이어베이스를 이용해 앱에서 이메일/비밀번호와 구글 인증을 처리하는 방법을 다룰 것이다. 파이어베이스란? 파이어베이스(Firebase)는 2011년 파이어베이스사가 개발하고 2014년 구글에 인수된 모바일과 웹 애플리케이션을 개발하는 플랫폼이다. 안드로이드 앱에서 파이어베이스를 .. 2023. 7. 13.
19-2 구글 지도 활용하기 안드로이드 앱에서 지도를 출력하려면 먼저 지도 서비스를 제공하는 업체를 선정해야 한다. 지도 서비스 제공 업체로는 구글, 네이버, 카카오 등이 대표적이며 이곳에서 제공하는 API를 이용하면 지도를 출력할 수 있다. 이 책에서는 구글 지도를 이용할 것이다. 지도 사용 설정하기 구글 지도를 이용하려며 빌드 그래들과 매니페스트 파일, 구글 개발자 콘솔 등에 몇 가지 설정을 해야 한다. 지금부터 차례대로 살펴볼 것이다. 먼저 빌드 그래들의 dependencies 항목에 다음과 같이 선언한다. // 구글 지도 사용 선언 implementation 'com.google.android.gms:play-services:12.0.1' 그리고 매니페스트에 다음과 같은 퍼미션을 등록한다. 구글 지도는 구글 서버에서 전송되는.. 2023. 7. 13.
19-1 사용자 위치 얻기 여섯째 마당에서 앱에 다양한 기능을 추가하는 것에 대해 공부하고 있다. 17장 저장소에 데이터 보관하기, 18장 네트워크 프로그래밍에 이어 19장에서는 위치정보를 활용하는 것을 배울 것이다. 앱에서 사용자의 위치를 얻는 데는 1️⃣플랫폼 API를 이용하는 방법과 2️⃣구글 Play 서비스에서 제공하는 라이브러리를 이용하는 방법이 있다. 위치 접근 권한 먼저 앱에서 사용자의 위치를 추적하려면 3가지 권한을 얻어야 한다. 또한 각 상황에 맞춰 매니페스트 파일에 이 권한을 등록해야 한다. android.permission.ACCESS_COARSE_LOCATION: 와이파이나 모바일 데이터(또는 둘 다)를 사용해 기기의 위치에 접근하는 권한이다. 도시에서 1블록 정도의 오차 수준이다.(정확도 높아야 할 때. e.. 2023. 7. 13.
18-3 이미지 처리하기 - Glide 라이브러리 이번 절에서는 이미지를 다루는 Glide 라이브러리를 살펴볼 것이다. 이번 장의 주제는 네트워크 프로그래밍이지만 서버에서 이미지를 내려받을 때 Glide를 이용하면 네트워크 부분을 Volley나 Retrofit보다 더 쉽고 빠르게 개발할 수 잇다. Glide 는 Bump라는 앱에서 내부적으로 이용하다가 구글이 인수하여 공개한 라이브러리이다. Glide는 모든 종류의 이미지를 가능한 한 빠르게 가져와서 이용할 수 있게 한다. 또한 이미지의 크기를 조절하거나 로딩 이미지, 오류 이미지 표시 등을 쉽게 구현할 수 있다. Glide를 이용하려면 빌드 그래들의 dependencies에 다음처럼 등록해야 한다. // Glide 등록 implementation 'com.github.bumptech.glide:glid.. 2023. 7. 13.
18-2 HTTP 통신하기 앱에서 네트워크 통신을 구현하려면 우선 매니페스트 파일에 다음처럼 퍼미션을 선언해야 한다. // 인터넷 퍼미션 선언 안드로이드 앱은 네트워크 통신을 할 때 기본으로 HTTPS 보안 프로토콜을 사용한다. 만약 일반 HTTPS 프로토콜로 통신하려면 특정 도메인만 허용하도록 선언해 줘야 한다. res/xml 폴더에 임의의 이름으로 XML 파일을 만들고 다음처럼 작성한다. // HTTP 통신 허용 // 임의의 XML 파일? xxx.xxx.xxx.xxx // xxx.xxx 부분은 HTTP 프로토콜로 접속을 허용할 IP나 도메인 태그에 HTTP 통신을 허용할 서버의 IP나 도메인을 작성한다. 이렇게 작성한 XML 파일을 매니페스트의 태그에 networkSecurityConfig 속성으로 알려주면 해당 도메인에 한해.. 2023. 7. 13.
18-1 스마트폰 정보 구하기 전화 상태 변화 감지하기 - PhoneStateListener 앱에서 스마트폰의 상태를 파악해야 할 때가 있다. 예를 들면 전화가 걸려 오는 순간을 감지하거나 서비스 상태가 변경되는 순간을 감지하고 싶은 경우이다. 이처럼 스마트폰의 상태를 파악하는 방법은 PhoneStateListener를 이용하는 방법과 TelephonyCallback을 이용하는 방법이 있다. PhoneStateListener를 이용하는 방법은 안드로이드 초기 버전부터 제공되던 방식인데 안드로이드 12(API 레벨 31)에서 deprecated 되었고, 대신 TelephonyCallback이 추가되었다. 그러나 워낙 오랫동안 PhoneStateListener를 사용해왔고 안드로이드 12 하위 버전을 대상으로는 계속 사용해야 하므로 이 .. 2023. 7. 12.
17-3 공유된 프리퍼런스에 보관하기 공유된 프리퍼런스 이용하기 앱의 데이터를 내부 저장소에 저장하려면 앞에서 살펴본 데이터베이스나 파일을 이용할 수도 있지만 공유된 프리퍼런스(SharedPreferemces)를 사용하는 방법도 있다. 공유된 프리퍼런스는 플랫폼 API에서 제공하는 클래스로, 데이터를 키-값 형태로 저장할 때 사용한다. 공유된 프리퍼런스는 앱의 간단한 데이터를 저장하는 데 유용하며 내부적으로 내장 메모리의 앱 폴더에 XML 파일로 저장된다. SharedPreferences 객체를 얻는 방법은 다음 2가지를 제공한다. Activity.getPreferences(int mode) Context.getSharedPreferences(String name, int mode) Activity.getPreferences() 함수는 액티.. 2023. 7. 12.
17-2 파일에 보관하기 앞 절에서 살펴본 데이터베이스와 다음 절에서 살펴본 프리퍼런스는 모두 내부적으로는 파일로 저장되지만 코드에서 직접 파일을 읽거나 쓰지는 않고 특정 API를 이용하는 방법이다. 그러나 이번 절에서는 앱에서 직접 파일을 만들어 데이터를 쓰거나 읽는 방법을 살펴보자. 안드로이드 앱에서 파일을 다룰 때는 대부분 java.io 패키지에서 제공하는 클래스를 이용하므로 파일을 읽거나 쓰는 코드는 일반 자바 프로그램과 차이가 없다. File: 파일 및 디렉터리를 지칭하는 클래스이다. FileInputStream / FileOutputStream: 파일에서 바이트 스트림으로 데이터를 읽거나 쓰는 클래스이다. FileReader / FileWriter: 파일에서 문자열 스트림으로 데이터를 읽거나 쓰는 클래스이다. 안드로이.. 2023. 7. 12.
17-1 저장소에 데이터 보관하기 여섯째 마당: 앱에 다양한 기능 추가하기(17~19장) 안드로이드 앱은 대부분 서버와 데이터를 주고받거나 데이터를 데이터베이스에 저장해서 계속 이용할 수 있게 한다. 이런 기능을 앱에 추가하는 방법을 살펴보자. 17장에서는 앱의 데이터를 저장하고 이용하는 방법을 다룬다. 앱은 데이터를 저장하고 가공하여 서비스 할 수 있다. 이때 앱의 데이터는 대부분 외부 서버에 저장해놓고 통신으로 주고받지만 네트워크가 불안정한 상황도 있을 수 있으므로 안정된 서비스 제공을 목적으로 기기에 저장하는 방법도 알아야 한다. 안드로이드 기기에 데이터를 저장하는 방법은 크게 세가지로 나뉜다. 1️⃣데이터베이스, 2️⃣파일, 3️⃣프리퍼런스를 이용한다. 모두 자주 사용하므로 잘 알아두자. 데이터베이스 프로그래밍은 데이터 베이스에 .. 2023. 7. 9.
16-2 안드로이드 기본 앱과 연동하기 이번에는 안드로이드의 기본 앱을 연동하는 방법을 알아보자. 안드로이드 기본 앱 가운데 주소록 갤러리, 카메라, 지도, 전화 앱을 내가 만든 앱과 어떻게 연동하는지 살펴보자. 주소록 앱 연동하기 주소록은 가장 많이 이용하는 안드로이드의 기본 앱이다. 핸드폰의 주소록 앱을 연동하여 주소록 목록을 띄우고 사용자가 선택한 사람의 전화번호나 이메일 정보를 가져와 내가 만든 앱에서 이용할 수 있다. 우선 주소록 앱에서 데이터를 가져오려면 다음과 같은 퍼미션을 설정해야 한다. // 주소록 앱 사용 퍼미션 설정 그리고 주소록의 목록 화면을 띄우는 코드를 작성한다. // 주소록 목록 출력 val intent = intent(Intent.ACITON_PICK, ContactsContract.CommonDataKinds.P.. 2023. 7. 9.