#"Firebase"란 ? 앱을 개발하는데 있어서 , 여러 편의 기능을 제공해주는 구글에 인수된 착한 친구 ㅋ 언제 무엇을 어떻게 사용하는지에 관련한 정보는 아래에 자세하게 나와있음.
Firebase에서 사용이 가능한 각종 편의 기능들
- Build
- 출시 및 모니터링
- 참여
Firebase AndroidStudio에 가져와서 사용하는 방법 및 공식문서 주소
공식 문서 주소 링크 : https://firebase.google.com/docs/auth/android/start?hl=ko&authuser=0
Firebase 시작하기
- Firebase 사이트에 들어가서 시작하기 버튼 누르기
- 그럼 아래와 같은 화면이 뜨는데 , 프로젝트 추가하기를 누른다
- 아래에 보이는 것처럼 영어로 원하는 프로젝트의 이름을 작성해주면 된다.
- 계속 버튼 누르면 됨. "이 프로젝트에서 Google 애널리틱스 사용 설정" 설정하면 구글의 애널리틱스 계정이랑 연동되는데 권장한다고 하니까 그냥 사용하면 될듯
- 그럼 아래와 같은 화면이 뜨는데 그냥 "프로젝트 만들기" 누르면 된다.
- 그럼 아래와 같은 화면이 뜨는데 그냥 "계속" 버튼을 누르면 된다.
- 그럼 아래와 같은 화면이 뜨느데 빨간색 동그라미 쳐놓은 안드로이드 아이콘 클릭하면 된다.
- 그럼 아래와 같은 화면이 뜨는데 MainActivity에 들가면 package 옆에 package 이름이 뜬다. (빨간색 화살표 참고) 그러면 그 이름을 Firebase 사이트에 작성해주면 된다.
-여기에 추가할 것 추가하고 앱등록 누르면 된다.
- json 파일 다운로드 받기 누르고 , App수준의 프로젝트 폴더에 넣어주라니까 다운로드 받은 곳에서 json 파일을 찾아서 App 수준의 프로젝트 폴더에 넣어주면 된다.
9-1. 아래 사진의 밑줄 친 부분 처럼 Project로 변경해주고 , 동그라미 친 곳에 있는 app 폴더에 다운 받은 json 파일을 넣어준다.
9-2. 그럼 아래 사진 처럼 json 파일이 들어가게 된다.
9-3. !!!!!!!!!!!겁나중요!!!!!!!!!!! json 파일에 중요한 정보 많으니까 나중에 github 또는 플레이스토어에 배포 할 때 올리면 안된다. 아래 사진 처럼 gitignore에 json 파일 경로를 넣어줘야 한다.
9-4. 아래 사진 처럼 나오면 그냥 복부하면된. 아래에 자세하게 작성함.
-위위 사진의 1번 추가하려면 프로젝트 수준의 build.gradle에 "id("com.google.gms.google-services") version "4.4.0" apply false" 추가해주기
- 위위 사진의 2번 추가하려면 앱수준의 build.gradld에 가서 동그라미 친 부분들을 추가해주면 된다. 다 하고 나서 다음 버튼 누르면 된다.
- 그럼 아래와 같은 화면이 뜨면 , "콘솔로 이동" 누르면 된다.
- 그럼 밑에 동그라미 부분의 제품카테고리에서 사용하고 싶은거 눌러서 그대로 시키는대로 하면됨. 일단 여기서는 RealtimeDatabase 해볼거임
- 이번에는 Realtime Database 알려주겠음. 11번의 사진에서 build에서 Realtime Database 누르면 아래와 같은 게 보일거임 그럼 데이터베이스 만들기 누르면 됨.
- 그럼 Database 설정 창이 뜨는데
- 데이터베이스 옵션에서는 그냥 미국 누르면 되고
- 테스트 모드에서 시작 누르면 된다. 그리고 마지막으로 사용설정 눌러주면 된다. 필요하면 잠금모드로 시작 누르면 됨.
- 아래 사진의 동그라미 친 부분이 사용할 RealtimeDatabase의 주소야.
글고 사진엔 없지만 화면 위에 보면 보안규칙도 있을거임. 거기서 보안규칙 설정해주면됨.
- 안드로이드 스튜디오에 RealtimeDatabase 가져오기
공식문서 주소 : https://firebase.google.com/docs/database/android/start?hl=ko 에 들어가서 - 밑줄 친 부분의 시작하기를 누르고 ,
- 밑줄 친 부분을 복붘해서 app 수준의 build.gradle에 넣어주면 된다.
16.RealtimeDatabase는 Data를 Json 형식으로 저장한다.
!!중요!! 무조건 데이터 평면화 시키기 : Object 접근을 자유롭게 할 수 있어.
공식 문서 주소 => https://firebase.google.com/docs/database/admin/structure-data?hl=ko
- RealtimeDatabase에 Data를 쓰는 방법 ,
-1. 데이터 평면화 시킨 Json 파일 만들기
-2. Json 파일에 알맞는 Key 값을 안스에 넣어주기(아래 사진 참고)
- DB_URL은 위에서 실시간 데이터 베이스 위치를 싱가포르로 설정 했을 때만, 설정해도 ㄱㅊ을듯 좀 있다가 아래에서 Firebase.database(여기에 DB_URL 넣어줘야 해 : 실시간 데이터 베이스의 위치를 싱가포르로 하였다면)
-3. Firebase.database.reference를 사용해서 DatabaseReference의 인스턴스 가져오기.
-위 사진은 공식문서에 나와있는 FirebaseRealtimeDatabase의 객체를 안스로 가져온느 방법임
- 코드 작성을 이렇게 해서 DatabaseReference의 객체를 가져오면 된다.
-4. RealtimeDatabase의 하위 폴더를 만들어준다. 이때 , child()안에 들어가는 문자열의 이름으로 하위 폴더가 생성된다. 그러면 아래와 같은 결과가 나오는데, RealtimeDatabase의 URL 주소의 하위에 폴더가 생긴다.
-5번 코드까지 실행하면 나오는 RealtimeDatabase의 결과임.
-위 코드가 실행되면, ㄱ.RealtimeDatabase의 URL 주소 하위에 DB_USERS라는 변수에 저장된 문자열이 폴더이름으로 된채로 폴더화 된다. => ㄴ. 그리고 나서 DB_USERS라는 변수에 저장된 문자열을 폴더이름으로 갖는 폴더 밑에 userId라는 변수에 저장된 문자열을 이름으로 갖는 폴더가 생긴다.
-5. updateChildren(user)을 실행하면 userId 변수에 저장된 문자열을 폴더이름으로 가지는 폴더의 내부에 user에 대한 정보가 저장된다. 이때 user는 map 자료형으로 만들어진 녀석이다.
=>updateChildren(user) 대신에 , setValue(user)를 사용해도 된다.
-4번의 사진 참고하면 될 듯.
- RealtimeDatabase에 저장 할 수 있는 Data 유형임.
- RealtimeDatabase에 Data를 읽는 방법
-방법에는 총 3가지가 존재한다.
-Data를 한 번만 가져오고 싶을 때 사용한다.
-Data가 변경될 때마다 값을 가져오고 싶을 때 사용한다.
-위 세가지 방법 중 상황과 필요에 따라 그냥 사용하면 된다..
-공식문서 링크 작성했으므로 , 참고 바람 : https://firebase.google.com/docs/database/android/read-and-write?hl=ko#read_data
-위 사진에 설명이랑 코드 작성되어있으므로 참고 바람.
위 사진에서 snapshot이 들어가는게 맨위에서 DB_USERS 폴더에서 시작했으니까 snapshot이 의미하는 것은 DB_USERS의 snapshot이다.
Firebase Realtime Database를 사용 할 때 중요한 것은 다음과 같다.
1. Json을 활용해서 DB의 Data 구조 설정해주기(코드 작업 할 떄 보면서 할거야. : Data Inflate 꼭 시켜주기)
2. DB에 데이터 쓰기
->child() : 폴더 이동
->updateChildren() || setValue() || push() => 데이터 쓰는 방법 3가지
3. DB에 데이터 읽기
->addValueEnventListener || get || addListenerForSingleValueEvent => 데이터 읽는 방법 3가지