본문 바로가기

분류 전체보기134

20-3 인증 기능 이용하기 파이어베이스의 인증(Authentication) 기능은 앱에서 회원가입이나 로그인을 처리할 때 사용한다. 파이어베이스에서는 이메일/비밀번호 인증을 기본으로 제공하며 이 밖에 구글, 페이스북 등 다양한 업체의 인증과 연동하는 방법도 제공한다. 이메일/비밀번호 인증 먼저 회원가입을 한다는 가정으로 이메일/비밀번호 인증을 처리하는 방법을 살펴보자. 이메일/비밀번호 인증은 사용자의 회원가입 정보인 이메일/비밀번호를 파이어베이스에 1️⃣저장하고 이를 바탕으로 2️⃣로그인을 처리하는 방식이다. 이때 지메일, 핫메일, 네이버 메일, 다음 메일 등 실제로 존재하는 이메일을 등록해야 한다. 등록한 이메일로 인증 메일이 자동 발송되면 사용자는 이메일 계정에 로그인해 해당 메일을 확인함으로써 인증을 처리하는 구조이다. 비밀.. 2023. 7. 14.
20-2 파이어베이스 연동하기 파이어베이스와 연동하려면 파이어베이스 콘솔에서 프로젝트를 만들고 안드로이드 스튜디오에서 여러 가지 설정을 해줘야 한다. 지금부터 하나하나 차례대로 살펴보자. 파이어베이스 프로젝트 생성하기 먼저 파이어베이스 콘솔에서 프로젝트를 만들어야 한다. 웹 브라우저에서 console.firease.google.com에 접속해서 구글계정으로 파이어베이스 콘솔에 로그인한다. 그리고 첫 화면에서 를 클릭한다. 그러면 프로젝트 만들기 단계가 시작된다. 첫단계는 프로젝트 이름 입력하기! 프로젝트 이름을 입력하면 아래에 프로젝트 식별자가 자동으로 지정된다. 식별자는 프로젝트의 고유 식별자로서 파이어베이스의 실시간 데이터베이스 URL이나 파이어베이스 호스팅에서 하위 도메인 등에 이용된다. 만약 식별값을 직접 지정하고 싶다면 클릭.. 2023. 7. 13.
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.