android app에서 firebase storage의 데이터 가져오기

platfarm tech team
mojitok
Published in
5 min readMar 10, 2019

안녕하세요! 안드로이드 개발 인턴 sundae입니다.

이 글을 쓰게 된 계기는 이번 Firebase를 도입하면서 많은 글을 검색하고 읽어보았지만 FirebaseUI 와 Glide를 쓰는 내용이 대부분이었으며, Firebase를 처음 쓰는 사람들에게 공식 홈페이지 내 설명이 복잡하게 나와있었습니다. 그래서 Firebase를 처음 접하는 초보 개발자들이 좀 더 쉽게 접근하여 사용 할 수 있도록 튜토리얼 형식으로 자세하게 작성하였습니다.

firebase는 구글에서 서비스 중인 웹 개발과 모바일 개발에 직접적으로 도움이 되는 기능을 제공하는 클라우드 플랫폼입니다. 현재 파이어베이스에는 약 20가지의 앱에서 필수로 요구되는 기능들이 구현되어 있으며, 이러한 기능들은 지속적으로 추가 및 업데이트 되고 있습니다.

그 중 firebase storage는 사용자의 사진, 동영상등의 컨텐츠를 저장할 수 있는 백엔드 및 인터페이스를 cloud로 제공합니다. Challa NEON 에서는 firebase storage를 challa Stock의 미디어를 저장, 불러오기위해 사용하였습니다.

샘플 코드는 https://github.com/mojitok/android-firebase-image-downloader-sample을 참고해주세요.

android app과 firebase 연동하기

app에서 storage의 데이터를 가져오려면 일단 firebase 사이트에서 등록을 먼저 하여야 하며, 순서는 다음과 같습니다.

Step 0. 프로젝트 생성

Firebase web console에서 [프로젝트 설정]에 들어간 후, [설정] > [일반] 탭에 들어가서 [앱 추가]를 누르고 [안드로이드]를 선택합니다.

Firebase web console에서 앱 추가하기

Step 1. 안드로이드 패키지 이름

Android Studio에서 패키지 이름(Application ID)를 설정하고, 해당 Application ID를 firebase web console의 [Android 패키지 이름] 란에 추가합니다.

Step 2. 구성파일 다운로드

  • Firebase에서 google-services.json을 앱 모듈 디렉토리(app/)로 이동

안드로이드 스튜디오의 Project 탭으로 가서 Project 밑의 app 폴더에 넣어주면 됩니다.

Step 3. Firebase SDK 추가

프로젝트 레벨의 build.gradle (<project>/build.gradle) — 전체 코드는 링크
앱 수준의 build.gradle (<project>/<app-module>/build.gradle) — 전체 코드는 링크

Android app에서 Firebase storage의 데이터 가져오기

step1. 접근 규칙 설정

storage에 데이터를 업로드하거나 가져오기 위해서는 일단 허가를 받아야 합니다.

Firebase 콘솔에서 storage에 들어가면 규칙 탭이 있습니다. 테스트를 위해 임시로 모든 사용자가 모든 데이터를 접근 할 수 있도록 수정해 두었습니다.

step2. cloud storage 연결 설정하기

storage를 참조하는 StorageReference를 생성하고, images폴더안에 image.jpg 라는 파일을 불러오고 싶으면 child(“images/image.jpg”) 로 정의하면 됩니다.

firebase와 연동하는 코드 — 전체코드는 링크

step3. Storage 접근 후 데이터 로컬에 저장하기

storage에 접근 후 가져오는 전체적인 코드는 다음과 같습니다.

좀 더 세분화해서 설명 하자면 File을 다운로드 받을 때는 비동기적으로 수행합니다. 즉, 다음을 함수로 만들거나 하였을 경우 함수가 실행된 후 다음 코드로 진행 되었을 때, 함수는 끝났지만 아직 File을 받아오는 중 일 수 있기에 유의해야합니다.

final FileDownloadTask fileDownloadTask = pathReference.getFile(file);

다음은 file download 의 성공이나 실패 하였을 경우 실행되는 코드입니다. 아래는 성공하였을 경우 저장된 path를 보여주고, 해당 이미지 뷰에 저장한 사진을 가져옵니다. 다운로드를 실패 하였을 경우에는 해당 오류의 이유가 텍스트 뷰를 통해 보여집니다.

다음은 다운로드 진행 상황을 알려주는 코드입니다. 진행이 되고 있는 동안 현재 진행된 상황만큼 프로그레스 다이얼로그를 통하여 보여줍니다.

감사합니다.

참고자료

안녕하세요 안드로이드 개발인턴 sundae(이다운)입니다. 찰라 네온에 들어가는 stock 및 feed 부분을 개발하고 있습니다.

--

--